-1

用户将输入一个类似于 的字符串151+328。我需要一个函数来检测用户在两个数字之间输入的操作并返回它们。怎么做?我知道如何用正则表达式做第一部分(即[0-9]+\+[0-9],但我对第二部分一无所知。

tldr:

function('10+296', '+', 1)='10'    
function('10+296', '+', 2)='296'    
function('perpderpherp', 'derp', 2)='herp'
4

2 回答 2

1

此函数使用正则表达式来确保字符串采用以下格式:[0-9]+[0-9] 然后分解以拆分并返回一部分:

function splitAndReturn($str, $delimiter, $part) {
    $pattern = '/^\d+\+\d+$/';
    if (preg_match($pattern, $str)) {
        $parts = explode($delimiter, $str);
        return $parts[$part-1];
    }
    return false;
}

echo splitAndReturn('10+296', '+', 1); //=10
echo splitAndReturn('10+296', '+', 2); //=296
echo splitAndReturn('potatocarrotbanana', 'carrot', 1); // returns false because it doesn't comply with the "detect only [0-9]+[0-9]" rule you stated.

此函数用于explode在分隔符处拆分字符串并返回任何部分:

function splitAndReturn($str, $delimiter, $part) {
    $parts = explode($delimiter, $str);
    return $parts[$part-1];
}

echo splitAndReturn('10+296', '+', 1); //=10
echo splitAndReturn('10+296', '+', 2); //=296
echo splitAndReturn('potatocarrotbanana', 'carrot', 1); //='potato'

如果分隔符不存在,它将只返回原始字符串。

于 2012-10-21T18:26:29.727 回答
0

\d+\+\d+将检测到number + number而不是word + wordword + numbernumber + word

于 2012-10-21T18:58:48.323 回答