2015-01-04 96 views
-2

我有一個應該用新字符串替換字符串中的替代字符的程序。讓我說我有...用Java中的特定字符串替換字符

String s1 =「JAVAJAVA」;
String s2 =「VA」;

輸出:

VAVAVAVA

字在s1的每個替代指標應當與S2被替換。我試過使用StringBulider,但我無法繼續進行下去。請有人可以幫我解決這個問題。感謝

+1

只要迭代串和取代比其它字符。 – xyz 2015-01-04 13:18:40

+1

你需要[編輯]你的問題,幷包括你試圖解決這個問題。 – Pshemo 2015-01-04 13:24:09

回答

4

試試這個:

s1 = s1.replaceAll(".(.)", s2+"$1"); 

說明:正則表達式每2個字符".(.)"匹配。第二個字符是「記住」(括號),所以你可以在更換部分重新使用它($1):

+0

謝謝。你能否詳細解釋我的工作方式?我不明白「。(」)和語法中的$ 1表達式 – Dev 2015-01-04 13:34:19

+0

它被稱爲「正則表達式」,是用於文本匹配/替換的非常強大的機制。看看這裏http://docs.oracle.com/javase/tutorial/essential/regex/。點('.')只是「匹配任何字符」的通配符。 'F.O'匹配'FOO','FAO','FBO'等。 '..'匹配任何2個字符的序列。替換部分中的$ 1表示搜索模式中的第一個括號內的表達式,在我們的例子中,第二個字符在我們的搜索模式中由第二個點表示。所以我們將第二個字符從搜索模式「複製」到替換模式。 – geert3 2015-01-04 13:44:53

+0

我試着理解正則表達式,而令我困擾的部分是$ 1和(。)表達式。當我寫..(。)這意味着VAvaVAva將作爲輸出,因爲它匹配字符串中的兩個字符。同樣,如果我寫。(。)它正在搜索一個字符,並正在取代VA ......如VAaVAaVAaVAa。但我不明白(。)和$ 1的目的。你能解釋一下這部分嗎? – Dev 2015-01-04 14:20:49

0

如果你想要去的不是正則表達式的其他方式等簡單的解決方案就可以了,但正則表達式應該是首選一個

1)分割字符串爲char陣列StringtoCharArray()功能

2 )通過運行循環

3裝在備用位置新字符)轉換回陣列字符串new String(charArray)