2010-03-06 48 views
1

在閱讀了Java的String類的文檔後,它看起來不支持從前面彈出(這是有道理的,因爲它基本上是一個char數組)。有沒有簡單的方法來做類似前面彈出一個Java字符串

String firstLetter = someString.popFront(); 

這將從字符串中刪除第一個字符並返回它?

回答

10

Java中的字符串是不可變的,所以您不能從中刪除字符。

您可以使用substring來獲取部分字符串。

String firstLetter = someString.substring(0, 1); 
someString = someString.substring(1); 
0

你應該看看StringReader。 read()方法返回單個字符。

+0

我不認爲這會工作,如果我想保留剩餘的數據作爲字符串和StringReader不會出現有像asString任何東西()。 – lhahne 2010-03-06 12:01:21

2

我不認爲有類似的東西(甚至因爲字符串不能被改變 - 一個新的需要創建),但你可以使用charAtsubString,以實現自己的。

的charAt的例子:

String aString = "is this your homework Larry?"; 
char aChar = aString.charAt(0); 

然後串:

String anotherString = aString.substring(1, aString.length()); 
+1

不應該是'aString.length()'而不是'aString.length() - 1'嗎? – 2010-03-06 12:07:51

+0

我可能是錯的,但如果字符串是10個字符長不是最後一個字符9的索引? – JohnIdol 2010-03-06 12:50:33

+0

是的,但String.substring(int,int)中的結束索引是唯一的。 (請參閱http://java.sun。com/javase/6/docs/api/java/lang/String.html#substring%28int,%20int%29) – whiskeysierra 2010-03-06 17:12:24

1

所以你基本上要在一個FIFO堆棧中的字符串?爲此,您可以使用在每個pop()方法下提供的LinkedList來彈出堆棧中的第一個。

要獲得String的所有字符LinkedList,這樣做的:

char c = chars.pop(); 
// ... 

更新

String string = "Hello World"; 
LinkedList<Character> chars = new LinkedList<Character>(); 
for (int i = 0; i < string.length(); i++) chars.add(string.charAt(i)); 

然後你就可以彈出如下它,我沒有看到評論說你希望能夠將剩餘的字符作爲字符串返回。那麼,你最好的選擇是創建和實現你自己的StringStack左右。這裏有一個開球例如:

public class StringStack { 
    private String string; 
    private int i; 

    public StringStack(String string) { 
     this.string = string; 
    } 

    public char pop() { 
     if (i >= string.length()) throw new IllegalStateException("Stack is empty"); 
     return string.charAt(i++); 
    } 

    public String toString() { 
     if (i >= string.length()) throw new IllegalStateException("Stack is empty"); 
     return string.substring(i, string.length()); 
    } 
} 

可以按如下方式使用它:

String string = "Hello World"; 
StringStack stack = new StringStack(string); 
char c = stack.pop(); 
String remnant = stack.toString(); 
// ... 

爲了使它更加牢固,可以最終組成一個LinkedList

相關問題