在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","");
这将删除所有的空格。