在閱讀了Java的String類的文檔後,它看起來不支持從前面彈出(這是有道理的,因爲它基本上是一個char數組)。有沒有簡單的方法來做類似前面彈出一個Java字符串
String firstLetter = someString.popFront();
這將從字符串中刪除第一個字符並返回它?
在閱讀了Java的String類的文檔後,它看起來不支持從前面彈出(這是有道理的,因爲它基本上是一個char數組)。有沒有簡單的方法來做類似前面彈出一個Java字符串
String firstLetter = someString.popFront();
這將從字符串中刪除第一個字符並返回它?
Java中的字符串是不可變的,所以您不能從中刪除字符。
您可以使用substring
來獲取部分字符串。
String firstLetter = someString.substring(0, 1);
someString = someString.substring(1);
你應該看看StringReader。 read()方法返回單個字符。
我不認爲有類似的東西(甚至因爲字符串不能被改變 - 一個新的需要創建),但你可以使用charAt
和subString
,以實現自己的。
的charAt的例子:
String aString = "is this your homework Larry?";
char aChar = aString.charAt(0);
然後串:
String anotherString = aString.substring(1, aString.length());
不應該是'aString.length()'而不是'aString.length() - 1'嗎? – 2010-03-06 12:07:51
我可能是錯的,但如果字符串是10個字符長不是最後一個字符9的索引? – JohnIdol 2010-03-06 12:50:33
是的,但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
所以你基本上要在一個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
。
您可以使用java.lang.StringBuilder
的charAt()
和deleteCharAt()
方法輕鬆實現此目的。 StringBuilder
也實現了一個toString()
方法。
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuilder.html
+1爲橫向思維。 – 2010-03-06 17:21:38
我不認爲這會工作,如果我想保留剩餘的數據作爲字符串和StringReader不會出現有像asString任何東西()。 – lhahne 2010-03-06 12:01:21