【问题标题】:keep only numbers from string except for decimal numbers只保留字符串中的数字,十进制数字除外
【发布时间】:2018-05-27 16:09:40
【问题描述】:

我只想获取字符串中 MyFruit 的百分比。 但在使用我的变量 CleanString 之前,我只想保留字符串中的数字,除了小数点的分隔符(“。”或“,”)。 我不知道为什么它不能很好地工作。例如,如果没有“香蕉”...... 如果香蕉有百分比,我想得到结果“1,2”。

var MyFruitSalad = "orange* 1,5%, bananaX, banana,BaNana_1,2%, apple_5 %, pineapple:3.5%";
var MyFruit = "banana";
var PercentMyFruit = MyFruitSalad.slice(MyFruitSalad.indexOf(MyFruit) + MyFruit.length).split('%').shift();

var CleanString = PercentMyFruit.replace(/[^0-9$.,]/g, '');
console.log(CleanString);

【问题讨论】:

  • 你的预期输出是什么?
  • 发布一个您希望看到的结果示例。
  • 重要的是要澄清,我认为你来自逗号“,”用于十进制?

标签: javascript replace slice indexof


【解决方案1】:

您可以在小写字符串中搜索小写单词并获取索引直到百分号。然后替换不需要的字符。

String#indexOf 区分大小写。

function getValue(string, word) {
    var index = string.toLowerCase().indexOf(word.toLowerCase()),
        part = string.slice(index + word.length, string.indexOf('%', index));

    return index === -1
        ? 'no ' + word + ' found!'        // or throw an exception
        : part.replace(/[^0-9$.,]/g, '');
}

console.log(getValue("orange* 1,5%, BaNana_1,2%, apple_5 %, pineapple:3.5%", "banana"));
console.log(getValue("orange* 1,5%, BaNana_1,2%, apple_5 %, pineapple:3.5%", "foo"));

【讨论】:

  • 如果 var "salad" 中没有 "banana" 则不起作用。结果总是“1,”5
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多