2013-06-02 143 views
2

任何時候一個字符串包含一個大寫字母后跟一個句點,我想用大寫字母替換大寫字母和句點。如何用大寫字母替換大寫字母后跟一個句點?

Today MR. Johnson walked to the mail box. 
=> Today MR Johnson walked to the mail box. 

William SR. won the race. 
=> William SR won the race. 

我試圖做到這一點使用gsub

MyText = "William SR. won the race." 
MyText = MyText.gsub(/[A-Z]\./,**I DON'T KNOW WHAT TO PUT HERE**] 

我可以匹配大寫字母后面的時期,但我無法弄清楚如何使用大寫字母代替我的匹配在期間之前。

+1

注意你要定義一個常量(通過啓動字'MyText'用大寫),並在下一行就被改變。 – steenslag

+1

在這兩種情況下,''MR。「'和'」SR。「'應該是混合大小寫,''先生''和'」Sr.「'是正確的。刪除追蹤期只會導致英語的錯誤使用。 –

+1

錫文 - 我同意誤用英文,但是,我從第三方接收大文本文件中的數據並且無法控制格式。公平起見,我相信這些上限是用來叫出特定的個人/實體。 – Mutuelinvestor

回答

5

您應該使用positive look behind來匹配它並將其替換爲無。

MyText = "William SR. won the race." 
MyText = MyText.gsub(/(?<=[A-Z])\./, '') 

這是關於Rubular的example。如果您知道要替換而不是複製,則可以使用gsub!

+0

但我不想將其替換爲無。我想用比賽中的大寫字母替換。 – Mutuelinvestor

+0

你正在用什麼取代這段時間。對不起,如果這是誤導性的,信件仍然會保留。 – squiguy

+0

感謝您的澄清。你不喜歡Rubular嗎? – Mutuelinvestor

7

的不環視,並使用捕獲組的另一種方式:

MyText = MyText.gsub(/([A-Z])\./,'\1') 
+0

Congratz 3K ... – HamZa

+0

@HamZa:我沒有香檳。 –

相關問題