【问题标题】:How to convert a string to 0 if it isn't containing any digit?如果字符串不包含任何数字,如何将其转换为 0?
【发布时间】:2016-02-02 00:32:16
【问题描述】:

我有这个输入:

var str1 = "21";
var str2 = "1.";
var str3 = "5. test"
var str4 = "- something";

我想要这个输出:

// 21
// 1
// 5
// 0

  • 第一个案例不需要转换。
  • 第二种情况需要使用Number();
  • 第三种情况使用.replace(/(\d)/g, "$1");
  • 但是我该如何处理第四种案例?其实我想用0替换一个字符串,如果它不包含数字。

我的问题似乎很简单,但我想了 30 分钟,但我仍然无法解决它。

【问题讨论】:

  • 检查第一个元素是否为数字...如果不是,则为其分配 0
  • @YoYo 返回NaN
  • 只检查 str4 的第一个元素,因为 1. 也会返回 NaN ,,,right
  • @YoYo 不,Number("1."); 返回1

标签: javascript jquery regex


【解决方案1】:

isNaN()parseInt()

var str1 = "21";
var str2 = "1.";
var str3 = "5. test"
var str4 = "- something";

console.log(isNaN(parseInt(str1)) ? 0 : parseInt(str1));
console.log(isNaN(parseInt(str2)) ? 0 : parseInt(str2));
console.log(isNaN(parseInt(str3)) ? 0 : parseInt(str3));
console.log(isNaN(parseInt(str4)) ? 0 : parseInt(str4));

【讨论】:

  • 他怎么能用这个...因为1.也会reurn NaN,,所以他应该给它分配0吗????
【解决方案2】:

你可以说如果 number(yourString) = NaN 然后打印 0

【讨论】:

  • Number("5. test") 也会产生 NaN。
  • 在这种情况下,我建议使用 charAt(0) 检查它是否在开头有一个整数。如果是这样,您可以检查下一个字符 (charAt(1)),直到它返回一些东西而不是一个数字或者它结束。您可以通过检查它的 aasci 代码来检查返回的字符是否为数字
【解决方案3】:
var str4 = "- something"; 
str4 = ( str4.match(/\d+/g)) ? str4 : 0;

【讨论】:

    【解决方案4】:
       var patt = /([0-9]+)/,
           match = patt.exec(str);
       if (!match) 
            str = 0;
       else
           str = match[1];
    

    这将匹配您字符串中的第一个数字。

    【讨论】:

    • 我要如果那个条件是true,那么就返回这样一个数字...!
    • 如果您的字符串中没有数字,此代码将打印 0。如果我得到你的问题。
    • 好的,我明白了。您想测试所有条件。我正在添加一个编辑。
    • 现在尝试编辑。如果您必须匹配字符串中的多个数字,则可以运行一个循环。这将从您的字符串中带来第一个匹配的数字,如果字符串中没有数字,则将存储 0。
    • :-)。现在它是一个完整的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    相关资源
    最近更新 更多