是否有一个内置函数可以计算两个字符之间的距离?例如:
如果我想计算a和c之间的距离,结果应该是1,因为a和c之间有一个字母。
我做了一个函数来实现这一点,但是我需要知道是否有一个内置的解决方案或一个简单的解决方案。
function str_distance($a, $b){
$cant = 0;
while(true){
if (++$a == $b)
return $cant;
$cant++;
}
}但是,当计算z到b或任何到字母表末尾的计算时,这是行不通的。
有什么建议吗?
发布于 2018-03-13 18:57:18
$firstChar = 'a';
$secondChar = 'z';
$distance = abs( ord($firstChar) - ord($secondChar) );你在找这样的东西吗?ord返回字符的ascii代码,我们使用abs来补偿负距离,或者您可以保留此操作的符号以了解它们的不同方式(如果第一个大于还是小于第二个),这取决于您想要实现什么。
编辑
function letterDistance($a, $b){
$alphLetterCount = ord('z') - ord('a');
$distance = ord(strtolower($b)) - ord(strtolower($a));
return ($distance < 0 ? $alphLetterCount + $distance : $distance-1);
}这个函数的工作原理与OP想要的从'z‘到'b’是1,从'b‘到'z’的距离是23一样,它也是不区分大小写的。
发布于 2018-03-13 19:05:03
只需在php中使用ord()函数并获得char的int值。像这样用它
function str_distance($a, $b){
return ord($b) - ord($a);
}
echo str_distance('a', 'c') - 1;`
发布于 2018-03-13 19:11:04
好吧,这听起来可能有点傻,但我很无聊:
return count(array_diff(range($a, $b), [$a, $b]));$a到$b的范围$a和$b之间的差异https://stackoverflow.com/questions/49263798
复制相似问题