我正在尝试使用Javascript .substring()仅检索字符串的价格部分。
我知道可以使用Regex做到这一点,但我想使用.substring()解决它。
我为.substring()定义了起始值和结束值,而不是在中间获取值: 5.75 ...我只得到了不需要的字符串部分 US :: Air:和 USD ,来自字符串“ US :: Air:5.75 USD” 。
有人可以针对我在这里做错的事情提供一些快速建议吗?
var cat = "US::Air:5.75 USD"
var firstPart = cat.lastIndexOf(":") + 1;
console.log(firstPart);
var secondPart = cat.split(" ")[1];
console.log(secondPart);
var betweenFirstNSecond = cat.substring(firstPart, secondPart);
console.log(betweenFirstNSecond);
预期结果:5.75 控制台日志的实际结果: 11 美元 US :: Air:
答案 0 :(得分:2)
无需拆分。您应该只获得要获取新字符串的位置和要停止减去的位置:
let str = "US::Air:5.75 USD";
let subStr = str.substring(str.lastIndexOf(':') + 1, str.lastIndexOf(' '));
console.log(subStr);
OR:
let str = "US::Air:5.75 USD";
let startToSubtract = str.lastIndexOf(':') + 1;
let endToSubtract = str.lastIndexOf(' ');
let subStr = str.substring(startToSubtract, endToSubtract);
console.log(subStr);
答案 1 :(得分:0)
将
NaN
的任何参数值都视为0。
由于第二部分的值是字符串,因此当您尝试更改其数字时,它将导致NaN
console.log(+"USD")
如果indexStart大于indexEnd,则substring()的效果 好像两个参数已被交换;
因此您的代码实际上在执行str.substring(0, lastIndexOf(":") + 1)
,最终得到的值直到最后:
,而您可以使用lastIndexOf空格字符或任何分隔符
var cat = "US::Air:5.75 USD";
var firstPart = cat.lastIndexOf(":") + 1;
var secondPart = cat.indexOf(" ");
var firstMinusSecond = cat.substring(firstPart, secondPart);
console.log(firstMinusSecond);
答案 2 :(得分:0)
在您的代码中,起始索引为8,终止索引为“ USD”,即NaN。 因此,子字符串方法将结束索引视为0。 现在,由于开始索引8大于结束索引0,所以交换了两个参数。 这最终导致方法子字符串(0,8)产生美元US :: Air:
请参考MDN文档: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring