【发布时间】:2019-07-11 11:57:20
【问题描述】:
我希望在 javascript 中比较两个字符串。我正在使用 localeCompare 方法,但输出不符合预期
116457 < 3085
false
"116457" < "3085"
true
"116457".localeCompare("3085")
-1
第二种和第三种情况的输出不符合预期。
我知道它按字典顺序排序,但我仍然无法理解为什么会这样以及我应该如何克服这个问题。
任何帮助将不胜感激。
【问题讨论】:
-
"1"在"3"之前,因此任何以"1"开头的字符串都在以"3"开头的任何其他字符串之前。你说你知道这一点,但很难理解为什么。你同意"a" < "c"吗? -
那些字符串总是整数?如果是,为什么不使用
parseInt(str)投射它? -
其实没有。在我正在处理的场景中,它们并不总是整数
-
关于“我应该如何克服这个问题”:如果您需要解决方案的建议,您必须更具体地了解要求。你的输入有什么模式,你希望它们如何排序?你说“c-3085”可以发生; "a-5" 和 "b-1" 和 "a-b+7-c+1" 也可以出现,应该如何排序?
-
感谢大家的帮助。我将编写自己的函数!
标签: javascript string-comparison