如何从字符串中包含的数字中减去?

时间:2014-07-13 20:03:44

标签: javascript php

我有一个包含数字的字符串,例如

  

图像/ cerberus5

期望的结果

  

图像/ cerberus4

如何从第一个字符串中的'5'中减去1以获得第二个字符串中的'4'?

2 个答案:

答案 0 :(得分:2)

这是一个原始示例,但您可以执行以下操作:

$old_var = 'images/cerberus4';
$matches = [];
$success = preg_match_all('/^([^\d]+)(\d+)$/', $old_var, $matches);
$new_val = '';

if (isset($matches[2]) && $success) {
    $new_val = $matches[2][0].((int)$matches[2][0] + 1);
}

它并不是一个完美的解决方案,而是为了给出一个可能的选择方向。

RegEx没有检测到(因为它更严格)是它在没有尾随数字(如images/cerberus)的情况下无法工作,但因为它看起来像是&{ #39;预期'模式我也不会让RegEx更松散。

通过将此代码放入函数或类方法中,您可以添加一个参数,以便自动告诉代码添加,减去或对尾随数字进行其他修改。

答案 1 :(得分:1)

function addOne(string){
    //- Get first digit and then store it as a variable
    var num = string.match(/\d+/)[0];
    //- Return the string after removing the digits and append the incremented ones on the end
    return (string.replace(/\d+/g,'')) + (++num);
}

function subOne(string){
    var num = string.match(/\d+/)[0];
    //- Same here just decrementing it
    return (string.replace(/\d+/g,'')) + (--num);
}

不知道这是否足够好,但这只是两个返回字符串的函数。如果必须通过JavaScript完成这样做:

var test = addOne("images/cerberus5");

将返回images / cerberus6

var test = subOne("images/cerberus5");

将返回images / cerberus4