2011-03-10 100 views
14

我想将空格字符替换为连字符中的连字符。将空格替换为连字符

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

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

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

对不起我的错误..深夜节目:(

感谢您的回答,我可能不能回答所有的结果,所以我将检查第一个答案

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

我想强调以下字符串众多的答案是不可改变的。 :) – 2011-03-10 16:24:33

+1

@Brent:嗯,也许我需要让我的答案更突出:更大更大胆的文本! – 2011-03-10 16:26:01

+0

需要6分钟才能查看答案。该死的我讨厌这个:( – ben 2011-03-10 16:29:18

回答

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

字符串被immutable,它们不能被创建后改变。所有的方法,不知怎的,作案一个字符串将返回一个新的字符串,其中包含修改。

5

replace and replaceAll方法返回带有替换结果的字符串。您是使用返回的值,还是期望replaceText字符串发生更改?如果是后者,则不会看到更改,因为字符串是immutable

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

// replaced will be "AT-AT", but replaceText will NOT change 
5

的替代方法返回一个字符串,所以你需要重新分配你的字符串变量即

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

字符串是不可改变的。

您需要保存replace()返回的值。 如果要替换多个事件,请使用replaceAll()

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

由于@Mark Peters指出的评论,replace(Char, Char)是足够了(快)替换所有出现。

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

如果这一事实困扰你:immutability is a Good Thing.

+0

字符串是不可变的吗?:P – 2011-03-10 16:27:21

+0

@Rob,hmmmmmm ...我不知道...可能不是? – 2011-03-10 16:28:31

+4

也许不是......但那个大胆的信息让我奇怪。 – Cristian 2011-03-10 16:33:06

3

字符串是不可改变的。你需要使用替换的返回值:

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

如果你要替换很多字符串,你需要考虑使用StringBuilder来提高性能。

String replaceText = "AT AT"; 
StringBuilder sb = new StringBuilder(replaceText); 
sb.Replace(' ', '-'); 
1
/*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; 
}