【问题标题】:How to compare string in javascript boolean function?如何比较javascript布尔函数中的字符串?
【发布时间】:2019-11-06 11:08:18
【问题描述】:

我必须为 JavaScript 函数编写一个单元测试来比较两个电话号码。这是一个函数,它的输入参数是两个字符串,返回类型是true / falseTrue 如果电话号码相同,false 如果不是。测试中应包含尽可能多的案例。

函数定义为phoneNrsAreEqual(nr1: String, nr2: String): Bool

谢谢你帮助我!

【问题讨论】:

    标签: javascript function boolean string-comparison stringcomparer


    【解决方案1】:

    开始的地方是通过创建不带标点符号的字符串版本来清理电话号码。

    function cleanPhoneNumber(n) {
      return n.replace(/[() +-]/g,"");
    }
    
    function phoneNrsAreEqual(nr1, nr2) {
      return cleanPhoneNumber(nr1) === cleanPhoneNumber(nr2);
    }
    

    如果数字中包含国际号码,情况会变得更加复杂,因为有很多不同的方式来表示它们。

    (01234) 567890
    +44 (1234) 567890
    01144 (1234) 567890   (when dialed from US)
    

    都是同一个数字。

    【讨论】:

    • 感谢您的帮助奥斯汀。因此,如果我理解正确,那么在 functin 中调用函数 cleanPhoneNumber 来比较数字是否有效?
    • 是的。 cleanPhoneNumber 是一个辅助函数,给定一个电话号码,返回该号码的一个版本,去掉了标点符号。返回语句将nr1 的清理版本与nr2 的清理版本进行比较。 === 运算符进行严格的相等比较以检查干净的字符串是否相等,从而产生真或假。
    【解决方案2】:

    我相信这是你需要的?

    您可以使用替换功能删除空格。

    function phoneNrsAreEqual(firstNumber, secondNumber) {
        
        return removeSpaces(firstNumber) == removeSpaces(secondNumber);
    
    }
    
    function removeSpaces(str) {
        
        return str = str.replace(/\s+/g, '');
    
    }

    【讨论】:

    • 是的,我正在寻找类似的东西,但我必须考虑到数字可以是空格,或者例如 0947854789 和 0947 854 789 数字是相同的,但由于空间或如果它会返回 false使用预拨号。
    • return firstNumber == secondNumber 返回真或假,? true : false 的使用毫无意义。
    • return str = str.replace(/\s+/g,''); 应该只是return str.replace(/\s+/g,''); return 中的赋值是没有意义的。
    猜你喜欢
    • 2018-03-29
    • 2011-08-05
    • 1970-01-01
    • 2015-02-24
    • 2021-11-05
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多