2011-12-06 69 views
0

我還沒有找到任何解決方案來解決我遇到的特定問題。我正在做一些XML解析,我想在其中處理字符串中的單詞。使用Java替換/添加字符串中特定位置的多個子字符串

由於我有一個案例:'word, word word word' - 單詞可以是任何字符串,因爲我不知道他們會提前。

我希望能夠操縱字符串以獲得以下結果:'word., word word. word' - 因此,第一個單詞和第三個單詞我想追加一個'.'到它們的末尾。

這是什麼適合的方法?將正則表達式是最好的方式?

+0

這聽起來像你有一個好主意,已經如何做到這一點。你是否簡單地引出了關於正則表達式是否比內置字符串方法「更好」或者是否比其他方法更有效的觀點?因此,我傾向於說,無論哪一個適合你。正則表達式和字符串都會在頭痛的情況下完成這項工作。 – Sanjamal

回答

0

假設單詞將使用相同的字符分隔,我認爲最簡單的方法是使用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)

當然,我不是很熟悉正則表達式,你並沒有真正給出這麼多的信息,所以正則表達式可能是一個選項,但我認爲這將需要你至少知道單詞的長度。

+0

這是一個很好的方法安迪。我能夠按照這些方法做一些事情,結果很好。感謝你的回答。 – Badweather

+0

謝謝,我很高興我可以幫助 - 很高興有一個公認的答案! – Andy

0

如果你想使用正則表達式然後下面應該爲你工作。正則表達式分爲3組,然後可以在replaceAll中的替換正則表達式中引用。

System.out.println("hello, my name is" 
    .replaceAll("(\\w+)(,\\s*\\w+\\s+\\w+)(\\s+\\w+)", "$1.$2.$3")); 
相關問題