在Java中删除string中的空格

我有这样的string:

mysz = "name=john age=13 year=2001"; 

我想删除string中的空格。 我试过trim()但这只会删除整个string前后的空格。 我也试过replaceAll("\\W", "")但是那么=也被删除。

我怎样才能实现一个string:

 mysz2 = "name=johnage=13year=2001" 

st.replaceAll("\\s+","")删除所有的空格和不可见的字符(例如tab, \n )。


st.replaceAll("\\s+","")st.replaceAll("\\s","")产生相同的结果。

第二个正则expression式比第一个正则expression式快20%,但是随着连续空格的数量增加,第一个expression式比第二个expression式更好。


如果不是直接使用,则将值赋给variables:

 st = st.replaceAll("\\s+","") 
 replaceAll("\\s","") 

\w =任何一个字的字符

\W =任何不是单词的字符(包括标点符号等)

\s =任何空格字符(包括空格,制表符等)

\S =任何不是空格字符(包括字母和数字,以及标点符号等)

(编辑:正如所指出的,如果你想要到达正则expression式引擎,你需要跳过反斜杠)。

这个问题最正确的答案是:

 String mysz2 = mysz.replaceAll("\\s",""); 

我只是从其他答案适应这个代码。 我发布它,因为除了正是什么问题要求,它也表明结果返回作为一个新的string,原来的string不会修改,因为一些答案暗示。

(有经验的Java开发人员可能会说“当然,你实际上不能修改string”,但这个问题的目标读者可能不知道这一点)。

如何replaceAll("\\s", "") 。 请参阅这里 。

如果你喜欢实用类来expression正则expression式,Spring Framework中的StringUtils中有一个方法trimAllWhitespace(String) 。

你已经从Gursel Koca得到了正确的答案,但我相信很有可能这不是你真正想要做的。 如何parsing键值而不是?

 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]); } } } 

输出:
name = john
年龄= 13
年= 2001年

处理string操作的一种方法是来自Apache公共的StringUtils。

 String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces); 

你可以在这里find它。 commons-lang包括很多,并得到很好的支持。

你应该使用

 s.replaceAll("\\s+", ""); 

代替:

 s.replaceAll("\\s", ""); 

这样,它将在每个string之间使用多个空格。 上述正则expression式中的+符号表示“一个或多个\ s”

如果你还需要删除牢不可破的空间,你可以像这样升级你的代码:

 st.replaceAll("[\s|\u00A0]+", ""); 

你可以简单地通过

 String newMysz = mysz.replace(" ",""); 
 public static void main(String[] args) { String s = "name=john age=13 year=2001"; String t = s.replaceAll(" ", ""); System.out.println("s: " + s + ", t: " + t); } Output: s: name=john age=13 year=2001, t: name=johnage=13year=2001 
 String a="string with multi spaces "; //or this String b= a.replaceAll("\\s+"," "); String c= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," "); 

//它可以和任何空间一起工作*不要忘记刺痛的空间b

最简单的方法是使用org.apache.commons.lang3.StringUtils类的commons-lang3库,例如“ commons-lang3-3.1.jar ”。

在你的inputstring上使用静态方法“ StringUtils.deleteWhitespace(String str) ”,它将在删除所有的空格后返回一个string。 我试过你的例子string“ name=john age=13 year=2001 ”,它返回了我想要的string – “ name=johnage=13year=2001 ”。 希望这可以帮助。

\W表示“非单词字符”。 空白字符的模式是\s 。 这在javadoc模式中有很好的logging。

在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; 

我希望它能帮助你。

有很多方法可以解决这个问题。 你可以使用分割函数或replacestring的函数。

欲了解更多信息,请参阅smilliar问题http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html

使用模式和匹配它更加dynamic。

 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); } } 
 import java.util.*; public class RemoveSpace { public static void main(String[] args) { String mysz = "name=john age=13 year=2001"; Scanner scan = new Scanner(mysz); String result = ""; while(scan.hasNext()) { result += scan.next(); } System.out.println(result); } } 
 mysz = mysz.replace(" ",""); 

第一个空间,第二个没有空间。

然后完成。

 var str ="hello the dog is big" var expression = /\s+/g; var x =str.replace(expression, ""); return x; 

这适用于我和find白色空间,而不仅仅是一定大小的空间。

要删除示例中的空格,这是另一种方法:

 String mysz = "name=john age=13 year=2001"; String[] test = mysz.split(" "); mysz = String.join("", mysz); 

它所做的是将它转换成一个数组,其中空格是分隔符,然后它将数组中的项目组合在一起,而不用空格。

它工作得很好,很容易理解。

您可以在不使用replaceAll()或Java中的任何预定义方法的情况下实现此目的。 这种方式是首选: –

 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);*/ } } 

使用apachestringutil类最好避免NullPointerException

 org.apache.commons.lang3.StringUtils.replace("abc def ", " ", "") 

输出将是:

 abcdef 

尝试这个

  String str="name=john age=13 year=2001"; String s[]=str.split(" "); StringBuilder v=new StringBuilder(); for (String string : s) { v.append(string); } str=v.toString(); 

使用mysz.replaceAll("\\s+","");

你想要的代码是

 str.replaceAll("\\s",""); 

这将删除所有的空格。