在动态字符串中提取单词

时间:2016-12-13 15:34:58

标签: javascript regex string substring

在这个例子中,我想提取字符串中的给定价格。

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);

上述方法无效,因为它选择了空格的最后一个索引(" "

如何在价格之后立即获得空间?

编辑

字符串可能是其他任何东西!我无法控制它,我只想提取价格。如果我没有说清楚。

6 个答案:

答案 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个$符号。