【问题标题】:Get currency symbol from a string price从字符串价格中获取货币符号
【发布时间】:2019-09-08 20:46:22
【问题描述】:

我有一个价格:

var str1 = '10,00 €';
var str2 = '12.22 $';

我只需要获取货币符号。我写了函数:

 function stringToCurrency(str){
    return Number(str.replace("€", "").replace("$", "");
}

但这只会替换'' 上的货币符号。如何获取货币符号?

【问题讨论】:

  • 你的函数不起作用。你有一个语法错误,因为缺少一个括号。
  • @deceze 他没有明确询问如何获取最后一个字符。您假设货币符号始终是最后一个字符,这在所有本地化中肯定不是这样。
  • 我只需要获取货币符号......你为什么要把它转换成数字?
  • @devios1 从给出的样本数据来看,是的,我假设。到目前为止,每个答案都是如此。如果不是这种情况,则需要澄清问题。

标签: javascript


【解决方案1】:

Number() 的工作方式是在给定任何数据集的情况下返回一个整数。当您将这些变量传递给它时,例如'10,00 €'Number 函数将返回 NaN,因为您将符号和空格传递给它。

为了只返回符号,JS 有内置的方法可以链接起来轻松处理。

如果位置已知,但值不知道,我们可以返回给定字符串位置的值charAt()

function knownLocation(s) {
  return s.charAt(s.length -1)
}

如果那个符号的位置是未知,但你知道它在那里,我们可以用.includes检查哪个在那里,然后返回索引处的字符。

function knownValue(s) {
 if (s.includes("$")) {
    return s.charAt(s.indexOf("$"))
 } else if (s.includes("€")) {
   return s.charAt(s.indexOf("€"))
 } else {
   return undefined
 }
}

【讨论】:

  • 嗯……if (s.includes('$')) return '$';……
  • @deceze 哈哈!完全没看到
【解决方案2】:

只需选择字符串的最后一个字符

function stringToCurrency(str) {
    return str.trim().charAt(str.length - 1);
}

【讨论】:

  • 我更喜欢在 substr.那个空旷的地方给我带来了足够的麻烦
  • 你应该使用substring; substr 已过时。
【解决方案3】:

您可以简单地编写一个函数,返回代表您想要的符号的字符串的最后一个字符。由于Javascript字符串是一个char数组,所以可以通过字符串的长度来访问最后一个字符,如下所示。

function stringToCurrency(str){
    return str[str.length-1];
}

希望对你有帮助!谢谢

【讨论】:

【解决方案4】:

如果我们使用正则表达式删除其他所有内容(数字、句点、逗号、空格),那么我们只剩下货币符号

var str1 = '10,00 €';
var str2 = '12.22 $';

function getCurrencySymbol(str) {
  //replace all numbers, spaces, commas, and periods with an empty string
  //we should only be left with the currency symbols
  return str.replace(/[\d\., ]/g, '');
}

console.log(getCurrencySymbol(str1));
console.log(getCurrencySymbol(str2));

【讨论】:

  • 当然可以,但是逗号、句号、空格也是非数字的,它们也会被返回
  • 您可以使用否定字符集来查找货币符号,而不是替换:/[^\d\.,\s]*/g,但结果相同。
  • 附注:-你不需要在字符类中转义.,反正很好+1
猜你喜欢
  • 2015-11-15
  • 1970-01-01
  • 2014-12-07
  • 2014-03-16
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多