Javascript字符串比较未显示正确的结果

时间:2016-01-29 12:26:51

标签: javascript string if-statement compare alert

我不清楚以下代码到底出了什么问题 我想要求用户输入文本字符串并将其与另一个文本字符串进行比较。然后通知用户他的字符串是按字母顺序高于还是低于存储的值。当我在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");

5 个答案:

答案 0 :(得分:1)

你根本没有比较你的变量,而是实际的字符串“string1”& “字符串2”。这就是为什么你总是得到第一个警报,因为"string1" > "string2" lexicographicaly(按字母顺序排列)。

使用:

if (string1 > string2)

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

string1.localeCompare(string2);

/* Returns:

 0:  equal

-1:  string1 < string2

 1:  string1 > string2

 */

答案 1 :(得分:0)

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

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

string1.localeCompare(string2)

答案 2 :(得分:0)

如果你删除变量名称周围的引号,它将按照宣传的方式工作。否则你要比较两个字符串而不检查变量。

因为“string1”&gt; “string2”总是假的,你总是进入你发布的代码中的else块

答案 3 :(得分:0)

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 :(得分:0)

正如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"