首页 > 解决方案 > 如何将字符串中的数字(无论位数)转换为特定的字符集?

问题描述

我一直在寻找答案,但找不到答案。

我需要一个函数,它将接受字符串输入并输出相同的字符串,但字符串中的数字在输出时将变为“###”或“$$$”(取决于前面是否有美元符号号码)。

以下是一些需要发生的事情的示例:

"Final Price:" ---> "Final Price:"
"Final Price of 3 for " ---> "Final price of ### for "
"Final Price of 27 for " ---> "Final price of ### for "
"Final Price of $12.50" ---> "Final price of $$$"
"Discount of -$8.99" ---> "Discount of -$$$"
"6/" ---> "###/"
"Selling 6-Piece Set" ---> "Selling ###-piece Set"

到目前为止,我已经使用 split() 将字符串转换为基于空格的数组,然后更改其中包含数字的元素。但是,当数字没有用空格分隔(6/ 或 4 件)时,这不起作用。

此外,无论数字有多少位数,它总是会变成三个主题标签“###”或美元符号“$$$”。

有任何想法吗?

标签: javascriptstring

解决方案


正则表达式替换可以帮助替换包含数字的单词。就是这样:

var input = "Final Price of 3 for";
var matches = Regex.Matches(input, @"(\w*\d\w*)");

foreach (Match matchVal in matches){
     //Check if number is decimal
      var decimalMatches = matchVal.Value.match(/(\d+)/);
      if(decimalMatches.length > 1) // means there is dot in between numbers
            input.replace(matchVal.Value, "$$$");
      else
            input.replace(matchVal.Value, "###");
}

推荐阅读