2013-06-02 98 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:我没有香槟。 –

相关问题