将空格replace为连字符

我试图用我的string中的连字符replace空格字符。

String replaceText = "AT AT"; replaceText.replace(' ', '-'); 

但是当我这样做,我似乎无法取代字符。 我尝试了replaceAll()方法,它也不起作用。

++++++回答+++++++

对不起我的错误..深夜编程的结果:(

感谢您的答案我不能回答所有,所以我会检查第一个答案

 replaceText = replaceText.replace(' ', '-'); 

Solutions Collecting From Web of "将空格replace为连字符"

 replaceText = replaceText.replace(' ', '-'); 

string是不可变的 ,创build后不能更改。 以某种方式修改string的所有方法将返回一个新的string,其中包含修改。

string是不可改变的。

您需要保存由replace()返回的值。 如果要replace多个匹配项,请使用replaceAll()

 String replaceText = "AT AT"; replaceText = replaceText.replaceAll(" ", "-"); 

正如@Mark Peters在评论中指出的那样, replace(Char, Char)足以(并且更快)replace所有的事件。

 String replaceText = "AT AT"; replaceText = replaceText.replace(' ', '-'); 

如果这个事实困扰你: 不变性是一件Good Thing

replacereplaceAll方法返回一个带有replace结果的String 。 你是使用返回值,还是期待replaceTextstring改变? 如果是后者,则不会看到更改,因为string是不可变的

 String replaceText = "AT AT"; String replaced = replaceText.replace(' ', '-'); // replaced will be "AT-AT", but replaceText will NOT change 

replace方法返回一个string,所以你需要重新分配你的stringvariables即

 String replaceText = "AT AT"; replaceText = replaceText.replace(' ', '-'); 

string是不可改变的。 你需要使用replace的返回值:

 replaceText = replaceText.replace(' ', '-'); 
 /*You can use below method pass your String parameter and get result as String spaces replaced with hyphen*/ private static String replaceSpaceWithHypn(String str) { if (str != null && str.trim().length() > 0) { str = str.toLowerCase(); String patternStr = "\\s+"; String replaceStr = "-"; Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(str); str = matcher.replaceAll(replaceStr); patternStr = "\\s"; replaceStr = "-"; pattern = Pattern.compile(patternStr); matcher = pattern.matcher(str); str = matcher.replaceAll(replaceStr); } return str; } 

如果你要replace很多string,你需要考虑使用StringBuilder来提高性能。

 String replaceText = "AT AT"; StringBuilder sb = new StringBuilder(replaceText); sb.Replace(' ', '-');