Javascript字母数字字符串比较

时间:2014-07-22 18:22:44

标签: javascript string-comparison alphanumeric

我有一个字符串'X1','X2','X3','S1','S2','S3'等列表。我想做以下比较

var string = INPUT STRING;
if( string > 'X10' ){
    DO THIS
}else{
    DO THAT
}

在这种情况下,如果输入字符串是'X8',那么我的代码返回X8 IS GREATER而不是X10。如果有办法,我可以真正得到X10> X8?

2 个答案:

答案 0 :(得分:5)

您可以将其拆分为字母和数字部分。假设字母部分只有一个字符,

var alpha = string.charAt(0);
var num = string.substring(1) | 0; // | 0 to cast to integer

if (alpha > 'X' && num > 10) {
    …

答案 1 :(得分:0)

如果您正在寻找字母数字字符串的自然排序或比较,您可以尝试使用 localeCompare() 方法。

对于小于、等于或大于的结果,它分别输出 -1、0 或 1。它也提供了一些有趣的选项。例如,要获得自然的字母数字排序 (x10 < x8),您可以传递 numeric: true 选项。为了在比较字符串时不区分大小写,您还可以传递 sensitivity: 'base' 选项。这将比较两个字符串 valueVALUE 是否相等,忽略大小写。

使用这两个选项的示例如下:

leftString.localeCompare(rightString, undefined, { numeric: true, sensitivity: 'base'})
// With this you would get following results
// X8 < X10
// X8 === x8

希望这是有用的。干杯!