Javascript 返回相反结果的子字符串

Javascript 返回相反结果的子字符串,javascript,Javascript,我试图使用Javascript.substring()仅检索字符串的价格部分 我知道这可以用正则表达式来完成,但我想用.substring()来解决 我定义了.substring()的起始值和结束值,而不是中间的值:5.75。。。我只从字符串“US::Air:5.75 USD”中获取我不需要的字符串部分US::Air:和USD 有人能给我一些关于我做错了什么的快速建议吗 var cat=“美国::航空:5.75美元” var firstPart=类别lastIndexOf(“:”)+1; 控制

我试图使用Javascript.substring()仅检索字符串的价格部分

我知道这可以用正则表达式来完成,但我想用.substring()来解决

我定义了.substring()的起始值和结束值,而不是中间的值:5.75。。。我只从字符串“US::Air:5.75 USD”中获取我不需要的字符串部分US::Air:USD

有人能给我一些关于我做错了什么的快速建议吗

var cat=“美国::航空:5.75美元”
var firstPart=类别lastIndexOf(“:”)+1;
控制台日志(第一部分);
var secondPart=分类拆分(“”[1];
控制台日志(第二部分);
var betweenFirstNSecond=类别子字符串(第一部分,第二部分);

console.log(介于firstns之间)无需拆分。您应该只获取要获取新字符串的位置和要停止减法的位置:

let str = "US::Air:5.75 USD";
let subStr = str.substring(str.lastIndexOf(':') + 1, str.lastIndexOf(' '));
console.log(subStr);
或:

任何
NaN
的参数值都被视为0

由于第二部分的值是字符串,当您尝试更改它的编号时,它将导致
NaN

console.log(+“USD”)
  • 如果任何参数的值为NaN,则substring()方法将其视为0
  • 如果开始索引为,则substring()方法交换其两个参数 大于结束索引
  • 在您的代码中,开始索引是8,结束索引是“USD”,即NaN。 因此,子字符串方法将结束索引视为0。 现在,因为开始索引8大于结束索引0,所以这两个参数被交换。 这最终导致方法子串(0,8)产生USD US::Air:

    请参阅MDN文档:

    secondpart是一个字符串而不是一个数字
    您需要传递一个数字货币可能会发生变化,我想避免使用“.indexOf”只针对“USD”@但您可以使用空格字符的最后一个索引,我只是用它来演示如何操作,主要问题是使用
    secondpart
    作为索引这对我来说很有用。。。将“”的最后一个索引作为结束值。谢谢
    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);