在这个例子中,我想提取字符串中的给定价格。
const string = 'I am a long sentence! My price is $5,000 on a discount!';
const price = string.substring(string.lastIndexOf("$")+1,string.lastIndexOf(" "));
document.write(price);
上述方法无效,因为它选择了空格的最后一个索引(" "
)
如何在价格之后立即获得空间?
编辑:
字符串可能是其他任何东西!我无法控制它,我只想提取价格。如果我没有说清楚。
答案 0 :(得分:2)
const string = 'I am a long sentence! My price is $5,000 on a discount!';
const price =string.split('$')[1]//text after $
.split(' ')[0];// text after $ and before space
document.write(price);
const string = 'I am a long sentence! My price is $5,000 on a discount!';
const price =string.split('$')[1].split(' ')[0];
document.write(price);
或
const string = 'I am a long sentence! My price is $5,000 on a discount!';
const price =string.match(/\$[0-9]*,[0-9]*/);
//match $XXX,XXX in the string and estract it
document.write(price);
答案 1 :(得分:2)
正则表达式并不总是正确的工具,但对于这种情况,它似乎是一个明显的选择。你真正想要的是与$
匹配的所有内容,后跟数字和逗号的混合,以任何其他角色结束。
const re = /\$[\d,]+/
const string = 'I am a long sentence! My price is $5,000 on a discount!';
const prices = re.exec(string);
console.log(prices[0]);
您可能希望扩展模式,例如,也匹配.
- /\$[\d,.]+
(将捕获“$ 5,000.25”)或更加宽容,除了空格之外的所有内容:{{ 1}}(将捕获“$ tonsofmoney”)。
答案 2 :(得分:2)
您可以尝试:
const string = 'I am a long sentence! My price is $5,000 on a discount!';
const price = (string.split("$")[1].split(" ")[0]);
document.write(price);
答案 3 :(得分:1)
请试试这个。我将它拆分成多行以提高可读性。
const string = 'I am a long sentence! My price is $5,000 on a discount!';
var dollarPosition = string.lastIndexOf("$");
var nextSpace = string.indexOf(" ", dollarPosition+1);
const price = string.substring(dollarPosition+1,nextSpace);
document.write(price);

答案 4 :(得分:1)
const string = 'I am a long sentence! My price is $5,000 on a discount!' +
'Another price: $120.';
var m = string.match(/\$[\d,]+/g);
var i, price;
if (m) {
for (i = 0; i < m.length; i++) {
price = m[i].replace('$', '');
console.log(price);
}
}
答案 5 :(得分:0)
您可以使用string.split()
const string = 'I am a long sentence! My price is $5,000 on a discount!';
const price = (string.split('$')[1]).split(' ')[0];
document.write(price);
这会将字符串拆分为$的第一个索引,并在$。之后取出该部分 而不是在第一次出现空格时拆分字符串并将该部分带到空格之前。
请注意,这需要字符串中只有1个$符号。