我有一个字符串'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?
答案 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'
选项。这将比较两个字符串 value
和 VALUE
是否相等,忽略大小写。
使用这两个选项的示例如下:
leftString.localeCompare(rightString, undefined, { numeric: true, sensitivity: 'base'})
// With this you would get following results
// X8 < X10
// X8 === x8
希望这是有用的。干杯!