仅当全字匹配时才替换字符串[重复]

问题描述 投票:0回答:2

我的项目中有时会出现一个字符串,它只是一个缩写词(即缩写),需要将所有字母都大写。

例如。

str_replace("Mcg","MCG",$string);

这很好地完成了工作。然而,有时这个字符串会包含一个首字母缩略词,它也是单词的开头。

例如。

str_replace("Wa","WA",$string)

这显然会将“想要”之类的词变成“WANt”,而我显然不想要这样的词。有什么方法可以只更改 2 或 3 个字符的单词吗?我正在考虑将字符串分解为数组并从那里开始。或者我应该使用更简单的功能吗?

php replace
2个回答
1
投票

如果效率不是问题,你可以这样做:

preg_replace("/\bWa\b/","WA",$string)

0
投票

使用在单词边界处停止的正则表达式,即如下所示:

preg_replace('/(\b)Wa(\b)/', 'WA', $string);

这会将所有出现的“Wa”替换为“WA”,只要其左侧或右侧有空格、逗号、点、换行符或没有字符(我确信我在那里丢失了一些字符) ).

这比过滤空白(或空格)更好,因为您可能会遇到以下情况:

He wants -> He wants
WaT -> WaT
Wa -> WA
Do be do be do Wa. -> Do be do be do WA.
Some Wa -> Some WA
Foo Wa Bar -> Foo WA Bar
© www.soinside.com 2019 - 2024. All rights reserved.