检测然后反转字符串中的数字

时间:2014-03-27 00:47:00

标签: javascript string split right-to-left

这里的独立开发者。寻找一些想法如何检测字符串中的数字并反转所述数字的字符。例如,给出字符串:

'Lorem ipsum dolor 345 sit $4.50 amet,78% consectetur 45.60%adipisicing elit'  

结果字符串为:

'Lorem ipsum dolor 543 sit 05.4$ amet,%87 consectetur %06.54adipisicing elit'  

技巧是识别整个数字段,其中可能包括货币符号,百分比符号,句号或逗号小数分隔符,千位分隔符。我希望能够反转与字符串相关的子部分,并将其作为数字。

想法?

4 个答案:

答案 0 :(得分:2)

这对于正则表达式来说可能是一个好工作:

var result = input.replace(/\$?[0-9]+(\.[0-9]+)?%?/g,
                           function(s) { return s.split('').reverse().join(''); });

演示:http://jsfiddle.net/6A3Nn/2/

答案 1 :(得分:1)

str = str.replace(/[0-9.$%]+/g, function(x) {
    return x.split('').reverse().join('')
});

FIDDLE

答案 2 :(得分:0)

有点粗糙,但应该工作。

function reverseNumInStr(str){
  var wordArray = str.split(' ');

  var newList = [];
  wordArray.forEach(function(word){
    var newWord = word.replace("$","").replace(".","").replace("%","").replace(",","");

    var num = parseFloat(newWord);

    if(!isNaN(num)){
      newList.push(word);
    }else{
      newList.push(reverseStr(word));
    }

  });

  return newList.join(" ");
}

function reverseStr(s){
    return s.split("").reverse().join("");
}

答案 3 :(得分:0)

var output = input.replace(/[0-9.$%]+/g, function(oneway) {
    return oneway.split("").reverse().join("");
  });

<强> Plunker

以下是一些有用的参考资料