2014-04-18 351 views
0

我有一個字符串,我需要從中刪除某個字符,我已經能夠做到這一點,但我仍然有問題。我擺脫了字符,但字符串的長度保持不變。從Java字符串中刪除字符

public class HelloWorld{ 

    public static void main(String []args){ 
     String data = "Hello World"; 
     System.out.println(data); 
     System.out.println("string length: " + data.length()); 
     char letter = 'l'; 
     data = data.replace(letter, '\0'); 
     System.out.println(data); 
     System.out.println("string length: " + data.length()); 
    } 
} 

這使我的輸出:

Hello World 

string length: 11 

Heo Word 

string length: 11 

我需要它是:

Hello World 

string length: 11 

Heo Word 

string length: 8 

爲什麼它似乎是數起,但在字符串中不再字符?

+1

字符串在Java中是不可變的...谷歌因爲 – Scorpion

+2

@Scorpion這不是問題,他正在重新分配它。 – hexafraction

+1

你必須是C程序員... – FracturedRetina

回答

4

replace是不正確的:

data = data.replace(letter, '\0'); 

Java沒有特殊對待空字符。相反,使用:

data = data.replace(String.valueOf(letter), ""); 

這是因爲有兩個重載,它們都不是replace(char, CharSequence)。因此,我們使用replace(CharSequence, CharSequence)過載(如字符串是CharSequence S)

如果你與重新定義letter是一個字符串OK,你可以簡單地做:

data = data.replace(letter, ""); 
+0

是的,字母必須是字符,所以感謝轉換。 – user2943615

3

你沒有刪除 chars,只是取代他們。

試試這個:

String letter = "l"; 
data = data.replace(letter, "");