我有一个像这样的字符串:
mysz = "name=john age=13 year=2001";
我想删除字符串中的空格。我试过了,trim()
但这只删除了整个字符串前后的空格。我也尝试过,replaceAll("\\W", "")
但后来=
也被删除了。
如何使用以下方法实现字符串:
mysz2 = "name=johnage=13year=2001"
我有一个像这样的字符串:
mysz = "name=john age=13 year=2001";
我想删除字符串中的空格。我试过了,trim()
但这只删除了整个字符串前后的空格。我也尝试过,replaceAll("\\W", "")
但后来=
也被删除了。
如何使用以下方法实现字符串:
mysz2 = "name=johnage=13year=2001"
Answers:
st.replaceAll("\\s+","")
删除所有空格和不可见字符(例如,tab,\n
)。
st.replaceAll("\\s+","")
并st.replaceAll("\\s","")
产生相同的结果。
第二个正则表达式比第一个正则表达式快20%,但是随着连续空格数量的增加,第一个正则表达式的性能要优于第二个正则表达式。
将值分配给变量(如果不直接使用):
st = st.replaceAll("\\s+","")
该问题的最正确答案是:
String mysz2 = mysz.replaceAll("\\s","");
我只是从其他答案中改编了这段代码。我发布它的原因是,除了确切地是问题所要求的内容之外,它还证明了结果以新字符串的形式返回,原始字符串并未像某些答案所暗示的那样被修改。
(经验丰富的Java开发人员可能会说“当然,您实际上不能修改String”,但是此问题的目标读者很可能不知道这一点。)
S
但不会覆盖S
指向的字符串。
如果您还需要删除牢不可破的空间,则可以这样升级代码:
st.replaceAll("[\\s|\\u00A0]+", "");
" ab c "
如果您更喜欢实用程序类而不是正则表达式,那么Spring框架中的StringUtils中有一个trimAllWhitespace(String)方法。
您已经从古塞尔·科卡(Gursel Koca)得到了正确的答案,但我相信这很有可能不是您真正想做的。如何解析键值呢?
import java.util.Enumeration;
import java.util.Hashtable;
class SplitIt {
public static void main(String args[]) {
String person = "name=john age=13 year=2001";
for (String p : person.split("\\s")) {
String[] keyValue = p.split("=");
System.out.println(keyValue[0] + " = " + keyValue[1]);
}
}
}
输出:
名称=约翰
年龄= 13
岁= 2001
你应该用
s.replaceAll("\\s+", "");
代替:
s.replaceAll("\\s", "");
这样,它将在每个字符串之间使用多个空格。上述正则表达式中的+号表示“一个或多个\ s”
replaceAll
重复,直到模式与字符串的任何部分都不匹配为止。
+
可能会使CPU更加友好,因为连续的空格是在单个替换操作中处理的,但是在这种情况下,这是唯一的区别。确实是All
,而不是+
替换字符串中非连续的空格。
在Java中,我们可以执行以下操作:
String pattern="[\\s]";
String replace="";
part="name=john age=13 year=2001";
Pattern p=Pattern.compile(pattern);
Matcher m=p.matcher(part);
part=m.replaceAll(replace);
System.out.println(part);
为此,您需要将以下软件包导入程序:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
希望对您有帮助。
使用Pattern And Matcher,它更加动态。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RemovingSpace {
/**
* @param args
* Removing Space Using Matcher
*/
public static void main(String[] args) {
String str= "jld fdkjg jfdg ";
String pattern="[\\s]";
String replace="";
Pattern p= Pattern.compile(pattern);
Matcher m=p.matcher(str);
str=m.replaceAll(replace);
System.out.println(str);
}
}
使用apache字符串util类最好避免NullPointerException
org.apache.commons.lang3.StringUtils.replace("abc def ", " ", "")
输出量
abcdef
st.replaceAll("\\s+","")
在Kotlin中使用时,请确保"\\s+"
使用Regex包装:
"myString".replace(Regex("\\s+"), "")
有很多方法可以解决此问题。您可以使用字符串的拆分功能或替换功能。
有关更多信息,请参见smilliar问题http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
字符串中也存在其他空格字符。因此,我们可能需要从字符串中替换空格字符。
例:无间断空间,3个电磁区,标点空间
这是空格char的列表http://jkorpela.fi/chars/spaces.html
所以我们需要修改
\ u2004我们用于三个PER-EM空间
s.replaceAll(“ [\ u0020 \ u2004]”,“”)
可以使用Character Class中的isWhitespace函数删除空格。
public static void main(String[] args) {
String withSpace = "Remove white space from line";
StringBuilder removeSpace = new StringBuilder();
for (int i = 0; i<withSpace.length();i++){
if(!Character.isWhitespace(withSpace.charAt(i))){
removeSpace=removeSpace.append(withSpace.charAt(i));
}
}
System.out.println(removeSpace);
}
将每组文本分成自己的子字符串,然后连接这些子字符串:
public Address(String street, String city, String state, String zip ) {
this.street = street;
this.city = city;
// Now checking to make sure that state has no spaces...
int position = state.indexOf(" ");
if(position >=0) {
//now putting state back together if it has spaces...
state = state.substring(0, position) + state.substring(position + 1);
}
}
public static String removeWhiteSpaces(String str){
String s = "";
char[] arr = str.toCharArray();
for (int i = 0; i < arr.length; i++) {
int temp = arr[i];
if(temp != 32 && temp != 9) { // 32 ASCII for space and 9 is for Tab
s += arr[i];
}
}
return s;
}
这可能会有所帮助。
您还可以查看下面的Java代码。以下代码不使用任何“内置”方法。
/**
* Remove all characters from an alphanumeric string.
*/
public class RemoveCharFromAlphanumerics {
public static void main(String[] args) {
String inp = "01239Debashish123Pattn456aik";
char[] out = inp.toCharArray();
int totint=0;
for (int i = 0; i < out.length; i++) {
System.out.println(out[i] + " : " + (int) out[i]);
if ((int) out[i] >= 65 && (int) out[i] <= 122) {
out[i] = ' ';
}
else {
totint+=1;
}
}
System.out.println(String.valueOf(out));
System.out.println(String.valueOf("Length: "+ out.length));
for (int c=0; c<out.length; c++){
System.out.println(out[c] + " : " + (int) out[c]);
if ( (int) out[c] == 32) {
System.out.println("Its Blank");
out[c] = '\'';
}
}
System.out.println(String.valueOf(out));
System.out.println("**********");
System.out.println("**********");
char[] whitespace = new char[totint];
int t=0;
for (int d=0; d< out.length; d++) {
int fst =32;
if ((int) out[d] >= 48 && (int) out[d] <=57 ) {
System.out.println(out[d]);
whitespace[t]= out[d];
t+=1;
}
}
System.out.println("**********");
System.out.println("**********");
System.out.println("The String is: " + String.valueOf(whitespace));
}
}
输入:
String inp = "01239Debashish123Pattn456aik";
输出:
The String is: 01239123456
private String generateAttachName(String fileName, String searchOn, String char1) {
return fileName.replaceAll(searchOn, char1);
}
String fileName= generateAttachName("Hello My Mom","\\s","");
提供了很多答案。我想提供一个比regex可读性更好的解决方案。
import java.io.IOException;
import org.apache.commons.lang.StringUtils;
public class RemoveAllWhitespaceTest {
public static void main(String[] args) throws IOException {
String str1 = "\n\tThis is my string \n \r\n !";
System.out.println("[" + str1 + "]");
System.out.println("Whitespace Removed:");
System.out.println("[" + StringUtils.deleteWhitespace(str1) + "]");
System.out.println();
}
}
\\W
表示所有非单词,请参见download.oracle.com/javase/6/docs/api/java/util/regex/…–