【问题标题】:Performing a simple digit test to a string对字符串执行简单的数字测试
【发布时间】:2013-10-26 20:59:01
【问题描述】:

我刚刚开始我的编程之旅,最近我一直在大学学习如何使用 JavaScript。我被困在一个我无法理解的运动中!

问题是:在不使用逻辑运算符的情况下编写数字测试[提示:字符串运算符]。

所以我需要测试一下字符串中是否有任何数字。据我所知:

var x=prompt("输入任意字符"); (例如 hello123)

var y="0123456789";

(我认为输入应该以某种方式与 y 变量进行比较,这样我才能得到答案)

这就是我的全部!希望这不应该太复杂。 (不能等待那个“哦,是的..”时刻!)

【问题讨论】:

    标签: javascript string digit


    【解决方案1】:

    我不太确定您的问题的确切范围是什么,但您可以使用正则表达式来检查数字:

    var x = prompt("Enter any characters");
    if (x && x.match(/\d/)) {
        // there are digits in the string
    }
    

    或以不同的方式编写(任何一个都有效):

    var x = prompt("Enter any characters");
    if (x && /\d/.test(x)) {
        // there are digits in the string
    }
    

    注意,这也是确保x 在尝试将其用作字符串之前不为空且不为空,因为如果用户取消提示,它将返回null

    \d 在正则表达式中表示匹配任何数字

    您可以阅读 javascript here 中的正则表达式以及使用它们的字符串方法 here


    我仍在猜测您的问题的真正界限是什么,但没有正则表达式并且只使用您在 cmets 中提到的函数,您可以这样做:

    var digits = "0123456789";
    
    // get string from user
    var str = prompt("Enter any characters");
    
    // check each digit one at a time
    if (str) {
        for (var i = 0; i < digits.length; i++) {
            // see if the next digit is in the string
            if (str.indexOf(digits.charAt(i)) {
                // found a digit
            }
        }
    }
    

    【讨论】:

    • 感谢您的回答!我能理解你的编码,但不幸的是我们还没有被介绍给“匹配”功能。也许我应该更清楚地知道我有什么可以解决这个问题。我可以使用以下内容:.length、.substr(start,length)、.substring(from,to)、.indexOf(subs)、.lastIndexOf(subs)、.indexOf(subs,from)、.lastIndexOf(subs, from), .charAt() 也可以使用赋值运算符。
    • @gsymeoni - 是的,您告诉我们实际限制是什么确实会有所不同。不能使用逻辑运算符是什么意思?
    • 我假设和(&&),或(||),而不是(!),ASCII
    • @gsymeoni - 好的,我添加了另一个解决方案,仅使用您提到的功能。
    • 这正是我所需要的。非常感谢您抽出宝贵时间,我也会确保阅读您提供的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 2013-11-03
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多