我看到有关截断前导零的问题,但没有找到解决我的问题的问题。我有一个字符串数组,表示从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+"
值?
由于
答案 0 :(得分:2)
您可以使用 map 通过测试每个值来生成新数组,如果它与nn-nn模式匹配,则将字符串拆分为数字,转换为数字(删除前导零但保留& #34; 0&#34;作为单个值),然后将它们作为字符串放回去。
如果字符串与nn +模式匹配,则相应地处理它。
E.g。
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;
如果你想用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+";
这应该删除所有前导零但不删除尾随零。