javascript中涉及到汉字的比较
在使用js中的"=="进行字符串的比较时,发现在英文情况下是ok的,但在中文比较时则不行了。
在网上搜索,提供了一个解决方法,使用
stringObject.localeCompare(target)
来解决中文比较问题。
string_a.localeCompare(string_b); /* Returns: 0: exact match -1: string_a < string_b 1: string_b > string_b */
这个方法的用法是:确定两个字符串在当前区域设置中是否相等。
微软资料如下:
http://msdn.microsoft.com/zh-cn/library/ie/62b7ahzy(v=vs.94).aspx
localeCompare 方法 (String) (JavaScript)
确定两个字符串在当前区域设置中是否相等。
stringVar.localeCompare(stringExp[, locales][, options])
对于比较字符串,可以指定 String 对象或字符串文本。
从 Internet Explorer 11 开始,localeCompare 在内部使用 Intl.Collator 对象进行比较,添加对 locales 和options 参数的支持。 有关这些参数的详细信息,请参见 Intl.Collator 和 Intl.Collator.compare。
重要事项 |
---|
locales 和 options 参数在所有的文档模型和浏览器版本中均不支持。 有关详细信息,请参见“要求”部分。 |
localeCompare 方法对 stringVar 和 stringExp 执行区分区域设置的字符串比较,并返回以下结果之一,这取决于系统默认区域设置的排序顺序:
-
-1,如果 stringVar 排在 stringExp 之前。
-
+1,如果 stringVar 排在 stringExp 的后面。
-
如果两个字符串相等,则为 0(零)。
下面的代码演示如何使用 localeCompare。
var str1 = "def"; var str2 = "abc" document.write(str1.localeCompare(str2) + "<br/>"); // Output: 1 var str3 = "ghi"; document.write(str1.localeCompare(str3)+ "<br/>"); // Output: -1 var str4 = "def"; document.write(str1.localeCompare(str4)); // Output: 0
下面的代码显示如何使用具有德语(德国)区域设置的 localeCompare。
var str1 = "a"; var str2 = "b"; document.write(str1.localeCompare(str2, "de-DE")); // Output // - 1
下面的示例显示如何使用具有德语(德国)区域设置和指定德语电话簿排序顺序的区域设置特定扩展的localeCompare。 此示例演示了特定于区域设置的差异。
var arr = ["ä", "ad", "af", "a"]; document.write(arr[0].localeCompare(arr[1], "de-DE-u-co-phonebk")); // Returns 1 document.write (arr[0].localeCompare(arr[2], "de-DE-u-co-phonebk")); // Returns -1 document.write (arr[0].localeCompare(arr[3], "de-DE-u-co-phonebk")); // Returns 1 document.write (arr[0].localeCompare(arr[1], "de-DE")); // Returns -1 document.write (arr[0].localeCompare(arr[2], "de-DE")); // Returns -1 document.write (arr[0].localeCompare(arr[3], "de-DE")); // Returns 1
在以下文档模式中受支持:Quirks、Internet Explorer 6 标准模式、Internet Explorer 7 标准模式、Internet Explorer 8 标准模式、Internet Explorer 9 标准模式、Internet Explorer 10 标准模式和 Internet Explorer 11 标准模式。此外,也在应用商店应用(Windows 8 和 Windows Phone 8.1)中受支持。请参阅版本信息。
locales 和 options 参数:
在 Internet Explorer 11 标准文档模式下支持此项。此外,也在应用商店应用(Windows 8.1 和 Windows Phone 8.1)中受支持。请参阅版本信息。
在以下文档模式中不受支持:Quirks、Internet Explorer 6 标准模式、Internet Explorer 7 标准模式、Internet Explorer 8 标准模式、Internet Explorer 9 标准模式和 Internet Explorer 10 标准模式。在 Windows 8 中不受支持。
相关文章
- javascript - 字符串比较
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
- javascript 31. :void(0) 含义
- 【JavaScript】关于javascript原型的深入理解
- 【JavaScript】理解与使用Javascript中的回调函数
- javascript book
- 前端学习之路-CSS介绍,Html介绍,JavaScript介绍
- javascript版的quine程序-返回自身源码
- 《21天学通HTML+CSS+JavaScript Web开发(第7版)》——2.7 小结
- JavaScript的组成—ECMAScript、BOM和DOM
- TypeScript 的优缺点及与 JavaScript 的比较
- JavaScript封装 弹出框
- 小游戏大智慧,10 个让人眼前一亮的 JavaScript 游戏
- JavaScript是如何工作的:与WebAssembly比较及其使用场景
- 华为OD机试 - 运动会(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- JavaScript数组的某些操作(二)
- 【javascript】如何在Javascript中创造map对象?
- javascript中Date对象:格式化时间,时间戳、倒计时详解和setTime()方法
- 比较有意思的原生态js拖拽写法----摘自javascript高级程序设计3