使用preg_replace(或其他基于PHP的选项):我需要用空格替换字符串出现在最后一个连字符之前的>中的所有连字符。
我需要的结果示例1:
字符串=我的酷字符串-201
结果=我的酷弦-201
我需要的结果示例2:
注意:请注意,此字符串示例仅包含1个连字符。
字符串=我的酷字符串-201
结果=我的酷弦-201
我当前的代码正在去除所有连字符,并以空格代替。
$origString = 'My-Cool-String - 201';
$newString = preg_replace("/[^A-Za-z0-9]/", ' ', $origString);
附加上下文:
在My Cool String - 201
的示例字符串中
我的酷字符串表示度假村的名称。
201代表房间号。
当度假村名称包含连字符时,我遇到了我最初提到的问题。
您可以使用
preg_replace('/-(?=.* -)/', ' ', $origString)
请参见PHP demo和regex demo。要考虑任何空格,请使用'/-(?=.*\s-)/'
或'/-(?=.*\s-\s)/'
(如果连字符的两边都应有空格)。
详细信息
-
-连字符(?=.* -)
-一个正向超前,它需要在除换行符以外的任何0+个字符之后都要求 -
,并尽可能多(在s
之后使用/
标志来匹配换行符)。