php - 查找字符串中任何大于某个数字的数字第一次出现的位置
问题描述
我有这个字符串:“20 加 1000 不是 20000。”
我想得到第一个大于 10000 的数字的位置。
我实际上(并且出于不同的目的)使用这个第一个答案代码来获取我的字符串中第一个数字的位置:
function firstNumPos($text){
preg_match('/^\D*(?=\d)/', $text, $m);
return isset($m[0]) ? strlen($m[0]) : false;
}
但它不区分数字大小,所以,这个函数可能缺少什么来获取大于 10000 的数字第一次出现的位置?
欢迎任何解决方案,不一定是使用该功能。
解决方案
只需使用此正则表达式
\d\d\d\d\d\d*
提取所有 5 位或更多数字的匹配项。然后你可以简单地检查第一个匹配并返回它
function getFirstOccr($srcStr, $places=5)
{
// $matchStr = '\d{'.$places.'}\d*';
$matchStr = str_repeat('\d', $places).'\d*';
preg_match('/'.$matchStr.'/', $srcStr, $matches);
return isset($matches[0]) ? strpos($srcStr,$matches[0]) : false;
}
$srcStr = "20 plus 1000 is not 20000.";
print getFirstOccr($srcStr,5);
我相信这应该是计算效率最高的
推荐阅读
- python - 如何在 python imap 中获取电子邮件附件大小
- python - Spyder IDE 绘图
- html - Angular 材质卡片分页器
- c# - Unity Shader Graph - 如何更改参数 --- 如何同时更改所有对象上的网格参数?
- java - Spring JPA:XML 配置 - 没有符合条件的存储库 bean/找不到元素“jpa:repositories”的声明
- java - 在 java 中使用 DateFormatter 获取 UTC 时间
- c - 米斯拉。写出例外的理由
- python - matplotlib:(自动)确保文本适合图
- javascript - 如果所有页面都作为 ajax 调用加载,如何在 Google Analytics 中跟踪页面浏览量
- c++ - 如何在 Arduino/C/C++ 中将带有布尔值的数组转换为字节?