2011-03-10 104 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; 
}