2012-12-09 56 views
-4

我得到一個字符串值作爲的Java:從字符串

String A = KS!BACJ 
String B = KS!KLO 
String C = KS!MHJU 
String D = KS!GHHHY 

刪除前三個字符是否可以刪除KS!從String,它只是看起來像BACJ

public class Main { 
    public static void main(String args[]) { 
    String A = "KS!BACJ"; 
    if(A.startsWith("KS!")) 
    { 
    } 
    } 
} 
+4

唉哭出聲來,你甚至開始嘗試算出這個?你做了半點搜索嗎?在JDK的API文檔中快速瀏覽一下? –

+0

這是一個簡單的解決方案,如果你已經搜索了API文檔或者甚至在eclipse的autosuggest特性中(如果你的ide是eclipse) –

回答

5

嘗試String a = A.substring(3);

+0

注意:它不會「從字符串中刪除前三個字符」 - 它會創建一個沒有前三個字符的新字符串。 – amit

2

您可以創建使用String#substring(int idx)一個新的字符串。

在你的情況下,它是yourString.substring(3),它會返回一個字符串,沒有前三個字符,例如:

String newString = yourString.substring(3); 

注:我們不能在「刪除從字符串中前三個字符」(不容易至少),因爲String不可變 - 但我們可以創建一個沒有前3個字符的新字符串。


獎勵:

要「刪除從字符串的第一個字符」 - 你將需要努力工作,使用反射。
這不建議使用,這裏僅用於教育目的!

String A = "KS!BACJ"; 
Field offset = A.getClass().getDeclaredField("offset"); 
offset.setAccessible(true); 
offset.set(A, (Integer)offset.get(A) + 3); 
Field count = A.getClass().getDeclaredField("count"); 
count.setAccessible(true); 
count.set(A, A.length()-3); 
System.out.println(A); 
+0

爲什麼downvote?請給出意見。 – amit

+1

這看起來像對我更詳細的答案。 +1 – 2012-12-09 08:17:00

+0

我修復了答案中最糟糕的問題。 –

2

試試這個。

String.substring(String.indexOf("!")+1 , String.length()); 
1

與Apache commmons浪StringUtils

String aString = "KS!BACJ"; 
String bString = StringUtils.removeStart("KS!"); 
1

使用StringBuilder代替。它不會創建新的String對象。它只是從給定的字符串中刪除前3個字母或更多。

String st = "HELLO"; 
StringBuilder str = new StringBuilder(st); 
str.delete(0, 3); 
Log.d("str", str.toString()); 

輸出:

LO