如何将Java字符映射替换函数mo31385a转换为等价PHP代码
Java自定义字符替换函数的PHP等价实现
原Java函数实现的是基于自定义字符映射表的逐字符替换逻辑,功能完全对齐的PHP实现代码如下:
function mo31385a(string $str, string $str2, string $str3): string { $strLength = strlen($str); $resultChars = []; for ($i = 0; $i < $strLength; $i++) { $currentChar = $str[$i]; $matchIndex = strpos($str2, $currentChar); if ($matchIndex === false) { $resultChars[] = $currentChar; } else { $resultChars[] = $str3[$matchIndex]; } } return implode('', $resultChars); }
逻辑对齐说明
- 逐位遍历第一个输入字符串的每个字符,遍历规则和原Java代码完全一致
- 用
strpos()查找当前字符在第二个字符串中的首次出现位置,返回false时对应Java中indexOf返回-1的场景,直接保留原字符不做修改 - 匹配到有效索引时,取第三个字符串对应索引位置的字符完成替换
- 最终拼接所有处理后的字符返回新字符串,和原函数返回规则完全一致
注意:上述实现默认处理单字节字符,和原Java函数针对ASCII字符场景的运行结果完全匹配;如果需要支持UTF-8多字节字符,将长度计算、位置查找、字符截取替换为对应的
mb_*系列多字节函数即可。
内容的提问来源于stack exchange,提问作者SELEEM AMR
相关产品推荐
相关产品推荐

