Removing whitespace from strings in Java
我有一个像这样的字符串:
1 | mysz ="name=john age=13 year=2001"; |
我想删除字符串中的空格。 我尝试了
如何通过以下方式实现字符串:
1 | mysz2 ="name=johnage=13year=2001" |
第二个正则表达式比第一个正则表达式快20%,但随着连续空格数量的增加,第一个正则表达式优于第二个正则表达式。
如果不直接使用,请将值分配给变量:
1 | st = st.replaceAll("\\s+","") |
1 | replaceAll("\\s","") |
(编辑:正如所指出的,如果希望
这个问题最正确的答案是:
1 |
我刚从其他答案中修改了这段代码。我发布它是因为除了正是问题所要求的,它还表明结果作为新字符串返回,原始字符串不会被修改,因为某些答案有点暗示。
(有经验的Java开发人员可能会说"当然,你实际上无法修改字符串",但这个问题的目标受众可能不知道这一点。)
处理字符串操作的一种方法是来自Apache commons的StringUtils。
1 |
你可以在这里找到它。
commons-lang包括更多,并得到很好的支持。
如果您还需要删除不可破坏的空格,可以像这样升级代码:
1 | st.replaceAll("[\\s|\\u00A0]+",""); |
如果您更喜欢实用程序类到正则表达式,那么Spring Framework中的StringUtils中有一个方法trimAllWhitespace(String)。
你已经从Gursel Koca得到了正确的答案,但我相信这不是你真正想做的事情。如何解析键值呢?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
output:
name = john
age = 13
year = 2001
你应该用
1 | s.replaceAll("\\s+",""); |
代替:
1 | s.replaceAll("\\s",""); |
这样,它将在每个字符串之间使用多个空格。
上述正则表达式中的+符号表示"一个或多个"
最简单的方法是使用
在输入字符串&上使用静态方法"
你可以这么简单地做到这一点
1 |
1 2 3 4 5 6 7 8 |
1 2 3 4 |
//它适用于任何空格
*不要忘记刺痛的空间b
使用Pattern和Matcher它更具动态性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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); } } |
使用
在java中我们可以做以下操作:
1 2 3 4 5 6 7 |
为此,您需要将以下包导入您的程序:
1 2 | import java.util.regex.Matcher; import java.util.regex.Pattern; |
我希望它会对你有所帮助。
1 | mysz = mysz.replace("",""); |
首先是空间,第二是没有空间。
然后就完成了。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
使用apache string util类最好避免NullPointerException
1 | org.apache.commons.lang3.StringUtils.replace("abc def","","") |
产量
1 | abcdef |
要删除示例中的空格,这是另一种方法:
1 2 3 |
这样做是将它转换为一个数组,其中空格是分隔符,然后它将数组中的项组合在一起而没有空格。
它工作得很好,很容易理解。
还有其他空格字符串也存在于字符串中。所以我们可能需要从字符串中替换空格字符。
例如:无休息空间,三维空间,PUNCTUATION空间
这是空格char http://jkorpela.fi/chars/spaces.html的列表
所以我们需要修改
u2004我们为三个空间
s.replaceAll("[ u0020 u2004]",")
有很多方法可以解决这个问题。
你可以使用拆分功能或替换字符串的功能。
有关更多信息,请参阅smilliar问题http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
您还可以查看以下Java代码。以下代码不使用任何"内置"方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | /** * 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)); } } |
输入:
1 |
输出:
1 | The String is: 01239123456 |
1 2 3 4 5 6 7 8 9 10 11 |
这可能有所帮助。
将每组文本分成自己的子字符串,然后连接这些子字符串:
1 2 3 4 5 6 7 8 9 10 | 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); } } |
可以使用Character Class中的isWhitespace函数删除空格。
1 2 3 4 5 6 7 8 9 10 11 | 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); } |
在Kotlin中使用
1 | "myString".replace(Regex("\\s+"),"") |
您可以在不使用replaceAll()或Java中的任何预定义方法的情况下实现此目的。
这种方式是首选: -
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class RemoveSpacesFromString { public static void main(String[] args) { // TODO Auto-generated method stub String newString; String str ="prashant is good" ; int i; char[] strArray = str.toCharArray(); StringBuffer sb = new StringBuffer(); for(i = 0; i<strArray.length; i++) { if(strArray[i]!= ' ' && strArray[i]!= '\t') { sb.append(strArray[i]); } } System.out.println(sb); /*newString = str.replaceAll("" ,""); System.out.println(newString);*/ } } |
你想要的代码是
1 | str.replaceAll("\\s",""); |
这将删除所有空格。
试试这个:
1 2 3 4 5 6 7 |