【问题标题】:Javascript string comparing not showing correct resultJavascript字符串比较未显示正确结果
【发布时间】:2016-05-07 04:34:49
【问题描述】:

我不清楚下面的代码到底有什么问题。
我想要求用户输入一个文本字符串并将其与另一个文本字符串进行比较。然后通知用户他的字符串按字母顺序是高于还是低于存储的值。当我在 jsfiddle 中对此进行测试时,我只会收到第二条警报消息。为什么会这样?

这是我的代码:

var string1;
var string2;
string1 = prompt("Tell me your string1?");
string2 = "green";

if ("string1" > "string2")
    alert("Your string is alphabetically higher");
else
    alert("Your string is not alphabetically higher");

【问题讨论】:

标签: javascript string if-statement compare alert


【解决方案1】:

您根本不是在比较变量,而是在比较实际的字符串“string1”和“string2”。这就是为什么您总是会收到第一个警报,因为"string1" > "string2" lexicographically(按字母顺序)。

用途:

if (string1 > string2)

这将修复您的代码并使其工作,但在 javascript 中比较字符串的更安全和更好的方法是使用 localeCompare:

string1.localeCompare(string2);

/* Returns:

 0:  equal

-1:  string1 < string2

 1:  string1 > string2

 */

【讨论】:

  • 感谢 Idos...认为这将是微不足道的。也会尝试 localeCompare,谢谢!
  • 没问题@whada,很高兴我能帮上忙
【解决方案2】:

正如 Idos 所提到的,您正在创建两个新字符串并在 if 语句中比较它们,而不是询问用户。

"string1" > "string2"
// This compares the values "string1" and "string2"

string1 > string2
// This compares the contents of the variables string1 and string2, 
// in your case the user input and "green"

【讨论】:

    【解决方案3】:
    var stringA = 'something';
    var stringB = 'foobar';
    var compareResult = stringA.localeCompare(stringB);
    
    if (compareResult < 0) {
      console.log('a is before b');
    } else if (compareResult > 0) {
      console.log('a is after b');
    } else {
      console.log('a equals b');
    }
    

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare

    【讨论】:

      【解决方案4】:

      如果您删除变量名称周围的引号,它会像宣传的那样工作。否则你是在比较两个字符串,从不检查变量。

      因为 "string1" > "string2" 总是假的,所以你总是会进入你发布的代码中的 else 块

      【讨论】:

        【解决方案5】:

        localeCompare() 方法返回一个数字,指示引用字符串是在排序顺序之前还是之后或与给定字符串相同。

        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare

        string1.localeCompare(string2)
        

        【讨论】:

        • 你应该向 OP 展示如何使用它,因为它对初学者来说并不明显。即当相等时返回 0... 等等。
        猜你喜欢
        • 2018-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-09
        相关资源
        最近更新 更多