2011-09-22 113 views
0

我有以下文字使用正則表達式

替換Java中的字符SQUENCE「這球ISN?t你,這個人是約翰?的」

我要糾正這是

「這個球不是你的,這是一個約翰的」

我怎樣才能做到這一點在Java中使用模式和匹配?

+0

這是一個字符編碼問題的驗屍修復? –

+0

任何你想使用正則表達式的原因,而不是用另一個字符序列替換一個字符序列? –

+1

你將如何避免'這是約翰的球嗎?'從變成'這是約翰的球'嗎? – corsiKa

回答

1

string.replaceall

String fixed = old.replaceAll("\\?([ts])", "'$1"); 

下面是一個example

+0

這是約翰的球嗎? - >這是約翰的球' – smas

+0

@smas,這不會因爲'([st])發生' – Joe

+0

我已評論您的帖子的第一個版本。但仍然取代'?' '對我來說很陌生。 – smas

0

在這種情況下,你可以使用:

s = s.replaceAll("\\b?\\b", "'"); 

然後你就不太可能取代合法的問號,因爲@glowcoder提及。不過,我認爲@Philipp是對的,這實際上是一個字符編碼問題。它看起來像你的文字應該是:

"This ball isn’t yours, this one is John’s" 

如果它被編碼爲CP-1252,但解碼成ASCII,捲曲單引號將與問號代替。如果是這種情況,您可能會發現其他字符,例如捲曲雙引號(「 」),連字符()和em-dash(),這些字符已以相同的方式被消除。