在javascript中从字符串中截断零

时间:2018-03-07 23:42:25

标签: javascript

我看到有关截断前导零的问题,但没有找到解决我的问题的问题。我有一个字符串数组,表示从api调用返回的天数。

例如:

arr= ["061-094", "0561-0960", "000-005", "180+"];
arr.map(function(d){

  <div>{d} days</div> // this returns 061-094 days
});

1)如何删除前导零,使其显示如下:

61-94 days
561-960 days
0-5 days

2)如何显示:

more than 180 days

表示"180+"值?

由于

3 个答案:

答案 0 :(得分:2)

您可以使用 map 通过测试每个值来生成新数组,如果它与nn-nn模式匹配,则将字符串拆分为数字,转换为数字(删除前导零但保留& #34; 0&#34;作为单个值),然后将它们作为字符串放回去。

如果字符串与nn +模式匹配,则相应地处理它。

E.g。

&#13;
&#13;
var arr = ["061-094", "0561-0960", "000-005", "180+"];

var result = arr.map(function(v) {

  // deal with nn-nn
  if (/\d+-\d+/.test(v)) {
    return v.split('-').map(s => +s).join('-');
  }

  // Deal with nn+
  if (/\d+\+/.test(v)) {
    return v.replace(/(\d+).*/, 'more than $1 days');
  }
});

console.log(result);
&#13;
&#13;
&#13;

如果你想用HTML包装,那么也可以这样做。

答案 1 :(得分:1)

假设您的数据中没有其他模式而不是000-000或180 +:

arr = ["061-094", "0561-0960", "000-005", "180+", "90+"];

var result = arr.map(function(d){
  

  if (d.substr(-1) == "+") {
    return "<div>More than " + d.slice(0,-1) + " days</div>";
  }
    
  var parts = d.split("-");
  
  var truncatedParts = [];
  
  parts.map(function(part) {
    truncatedParts.push(parseInt(part, 10));
  });

  return "<div>" + truncatedParts.join("-") + " days</div>" ;
});

console.log(result);

答案 2 :(得分:0)

你是否厌倦了制作一个删除所有前导零的字符串?

String strPattern = "^0+";

这应该删除所有前导零但不删除尾随零。