首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算两个字符之间的距离

计算两个字符之间的距离
EN

Stack Overflow用户
提问于 2018-03-13 18:51:57
回答 6查看 2K关注 0票数 1

是否有一个内置函数可以计算两个字符之间的距离?例如:

如果我想计算ac之间的距离,结果应该是1,因为ac之间有一个字母。

我做了一个函数来实现这一点,但是我需要知道是否有一个内置的解决方案或一个简单的解决方案。

代码语言:javascript
复制
function str_distance($a, $b){
    $cant = 0;
    while(true){
        if (++$a == $b)
            return $cant;
        $cant++;
    }
}

但是,当计算zb或任何到字母表末尾的计算时,这是行不通的。

有什么建议吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-03-13 18:57:18

代码语言:javascript
复制
$firstChar = 'a';
$secondChar = 'z';

$distance = abs( ord($firstChar) - ord($secondChar) );

你在找这样的东西吗?ord返回字符的ascii代码,我们使用abs来补偿负距离,或者您可以保留此操作的符号以了解它们的不同方式(如果第一个大于还是小于第二个),这取决于您想要实现什么。

编辑

代码语言:javascript
复制
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一样,它也是不区分大小写的。

票数 3
EN

Stack Overflow用户

发布于 2018-03-13 19:05:03

只需在php中使用ord()函数并获得char的int值。像这样用它

代码语言:javascript
复制
function str_distance($a, $b){
    return ord($b) - ord($a);
}

echo str_distance('a', 'c') - 1;

`

票数 1
EN

Stack Overflow用户

发布于 2018-03-13 19:11:04

好吧,这听起来可能有点傻,但我很无聊:

代码语言:javascript
复制
return count(array_diff(range($a, $b), [$a, $b]));
  • 创建从$a$b的范围
  • 得到范围与两个字符$a$b之间的差异
  • 数差额
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49263798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档