我還沒有找到任何解決方案來解決我遇到的特定問題。我正在做一些XML解析,我想在其中處理字符串中的單詞。使用Java替換/添加字符串中特定位置的多個子字符串
由於我有一個案例:'word, word word word'
- 單詞可以是任何字符串,因爲我不知道他們會提前。
我希望能夠操縱字符串以獲得以下結果:'word., word word. word'
- 因此,第一個單詞和第三個單詞我想追加一個'.'
到它們的末尾。
這是什麼適合的方法?將正則表達式是最好的方式?
我還沒有找到任何解決方案來解決我遇到的特定問題。我正在做一些XML解析,我想在其中處理字符串中的單詞。使用Java替換/添加字符串中特定位置的多個子字符串
由於我有一個案例:'word, word word word'
- 單詞可以是任何字符串,因爲我不知道他們會提前。
我希望能夠操縱字符串以獲得以下結果:'word., word word. word'
- 因此,第一個單詞和第三個單詞我想追加一個'.'
到它們的末尾。
這是什麼適合的方法?將正則表達式是最好的方式?
假設單詞將使用相同的字符分隔,我認爲最簡單的方法是使用indexOf(" ")
,然後使用substring
方法在返回的索引之前添加一個點。請記住,你也可以使用lastIndexOf(" ")
用於追加點3個字,你甚至可以指定的indexOf
即
String words = "word, word word word";
String newWords
int space1 = words.indexOf(" ");
newWords = words.substring(0, space1) & "." & words.substring(space1 + 1);
int lastSpace = newWords.lastIndexOf(" ");
newWords = newWords.subString(0, lastSpace) & "." & newWords.subString(lastSpace + 1);
的起始位置(我想沿着這些線路的東西的工作,但我沒有測試我寫了它沒有IDE)
當然,我不是很熟悉正則表達式,你並沒有真正給出這麼多的信息,所以正則表達式可能是一個選項,但我認爲這將需要你至少知道單詞的長度。
這是一個很好的方法安迪。我能夠按照這些方法做一些事情,結果很好。感謝你的回答。 – Badweather
謝謝,我很高興我可以幫助 - 很高興有一個公認的答案! – Andy
如果你想使用正則表達式然後下面應該爲你工作。正則表達式分爲3組,然後可以在replaceAll中的替換正則表達式中引用。
System.out.println("hello, my name is"
.replaceAll("(\\w+)(,\\s*\\w+\\s+\\w+)(\\s+\\w+)", "$1.$2.$3"));
這聽起來像你有一個好主意,已經如何做到這一點。你是否簡單地引出了關於正則表達式是否比內置字符串方法「更好」或者是否比其他方法更有效的觀點?因此,我傾向於說,無論哪一個適合你。正則表達式和字符串都會在頭痛的情況下完成這項工作。 – Sanjamal