有人可以帮助我找到字符串中任何数字第一次出现的位置的算法吗?
我在网上找到的代码不起作用:
function my_offset($text){
preg_match('/^[^\-]*-\D*/', $text, $m);
return strlen($m[0]);
}
echo my_offset('[HorribleSubs] Bleach - 311 [720p].mkv');
有人可以帮助我找到字符串中任何数字第一次出现的位置的算法吗?
我在网上找到的代码不起作用:
function my_offset($text){
preg_match('/^[^\-]*-\D*/', $text, $m);
return strlen($m[0]);
}
echo my_offset('[HorribleSubs] Bleach - 311 [720p].mkv');
function my_offset($text) {
preg_match('/\d/', $text, $m, PREG_OFFSET_CAPTURE);
if (sizeof($m))
return $m[0][1]; // 24 in your example
// return anything you need for the case when there's no numbers in the string
return strlen($text);
}
像这样使用时,内置的 PHP 函数strcspn()
将与 Stanislav Shabalin 的答案中的函数相同:
strcspn( $str , '0123456789' )
例子:
echo strcspn( 'That will be $2.95 with a coupon.' , '0123456789' ); // 14
echo strcspn( '12 people said yes' , '0123456789' ); // 0
echo strcspn( 'You are number one!' , '0123456789' ); // 19
高温高压
function my_ofset($text){
preg_match('/^\D*(?=\d)/', $text, $m);
return isset($m[0]) ? strlen($m[0]) : false;
}
应该为此工作。原始代码要求 a-
出现在第一个数字之前,也许这就是问题所在?
我可以做正则表达式,但我必须进入一个改变的状态才能记住它在我编码后做了什么。
这是一个简单的 PHP 函数,您可以使用...
function findFirstNum($myString) {
$slength = strlen($myString);
for ($index = 0; $index < $slength; $index++)
{
$char = substr($myString, $index, 1);
if (is_numeric($char))
{
return $index;
}
}
return 0; //no numbers found
}
查找字符串中第一个出现的数字
这是javascript中的非正则表达式解决方案
var findFirstNum = function(str) {
let i = 0;
let result = "";
let value;
while (i<str.length) {
if(!isNaN(parseInt(str[i]))) {
if (str[i-1] === "-") {
result = "-";
}
while (!isNaN(parseInt(str[i])) && i<str.length) {
result = result + str[i];
i++;
}
break;
}
i++;
}
return parseInt(result);
};
findFirstNum("words and -987 555");
-987