PHP实现将逗号后两个字符替换为".-"的解决方案求助
解决字符串替换问题:将逗号后两位字符替换为".-"
嘿,我来帮你搞定这个字符串替换的问题~你之前用substr直接截断末尾的方式显然不对,那是一刀切的操作,没法精准替换目标位置的内容。下面给你两种靠谱的解决方案:
方法一:正则表达式(推荐,适配多种类似场景)
正则能精准匹配到逗号后面的两个字符,不管逗号在字符串的哪个位置,都能准确替换成你想要的内容:
$str = "This product price is 23,39 and sale end after 29th June"; // 匹配逗号+任意两个字符,替换为".-" $newStr = preg_replace('/,(..)/', '.-', $str); echo $newStr;
这里的正则/(..)/会捕获逗号后的两个字符,然后用.-替换掉整个匹配的部分,最终输出就是你期望的结果。
方法二:字符串定位拼接(适合确定逗号位置的场景)
如果你确定字符串里只有这一个逗号,或者明确知道逗号的位置,可以用字符串定位和截取的方式拼接:
$str = "This product price is 23,39 and sale end after 29th June"; // 找到逗号的位置 $commaPosition = strpos($str, ','); // 确保逗号存在且后面有足够的字符 if ($commaPosition !== false && isset($str[$commaPosition + 2])) { // 拼接:逗号前的内容 + ".-" + 逗号后第3位开始的内容 $newStr = substr($str, 0, $commaPosition) . ".-" . substr($str, $commaPosition + 3); echo $newStr; }
为什么你之前的方法出错?
你用的echo substr($string, 0, strlen($string) - 3);是从字符串开头截取到倒数第3个字符,相当于直接砍掉了字符串最后3个字符,这和你要替换特定位置内容的需求完全不符,所以才会出现错误结果。
内容的提问来源于stack exchange,提问作者Suneth Kalhara
相关产品推荐
相关产品推荐

