在使用js中的"=="进行字符串的比较时,发现在英文情况下是ok的,但在中文比较时则不行了。

在网上搜索,提供了一个解决方法,使用

stringObject.localeCompare(target)

来解决中文比较问题。

string_a.localeCompare(string_b);/* Returns:0:  exact match-1:  string_a < string_b1:  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])

参数
stringVar

必需。 要比较的第一个字符串。

stringExp

必需。 要比较的第二个字符串。

locales

可选。 包含一种或多种语言或区域设置标记的区域设置字符串数组。 如果包含多个区域设置字符串,请以降序优先级对它们进行排列,确保首个条目为首选区域位置。 如果省略此参数,则使用 JavaScript 运行时的默认区域设置。 此参数必须符合 BCP 47 标准;请参见 Intl.Collator 对象了解详细信息。

options

可选。 包含指定比较选项的一个或多个特性的对象。请参见 Intl.Collator 对象了解详细信息。

备注

对于比较字符串,可以指定 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

JavaScript
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

JavaScript
var str1 = "a";
var str2 = "b";document.write(str1.localeCompare(str2, "de-DE"));// Output
// - 1

下面的示例显示如何使用具有德语(德国)区域设置和指定德语电话簿排序顺序的区域设置特定扩展的localeCompare。 此示例演示了特定于区域设置的差异。

JavaScript
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 1document.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 中不受支持。

转载于:https://www.cnblogs.com/davidwang456/p/4167033.html

javascript中涉及到汉字的比较相关推荐

  1. Javascript中得到中英文混合字符串的长度

    有同事在公司的OA上发了个贴子,介绍在javascript中如何得到中英文混合字符串的长度. 用的是正则表达式. var str = "坦克是tank的音译";var len = ...

  2. javascript中定位父级offsetParent 及偏移大小

    偏移量(offset dimension)是javascript中一个重要的概念.javascript中涉及到偏移的有offsetWidth.offsetHeight.offsetLeft.offse ...

  3. html 点击收藏效果,收藏Javascript中常用的55个经典技巧

    收藏Javascript中常用的55个经典技巧 更新时间:2007年08月12日 15:39:21   作者: 1. οncοntextmenu="window.event.returnVa ...

  4. regexp 好汉字符串_如何在JavaScript中使用RegExp确认字符串的结尾

    regexp 好汉字符串 by Catherine Vassant (aka Codingk8) 由凯瑟琳·瓦森(Catherine Vassant)(又名Codingk8) 如何在JavaScrip ...

  5. javascript案例_如何在JavaScript中使用增强现实-一个案例研究

    javascript案例 by Apurav Chauhan 通过Apurav Chauhan 如何在JavaScript中使用增强现实-一个案例研究 (How to use Augmented Re ...

  6. 在JavaScript中重复字符串的三种方法

    In this article, I'll explain how to solve freeCodeCamp's "Repeat a string repeat a string" ...

  7. 为什么要在JavaScript中使用静态类型? (使用Flow进行静态打字的4部分入门)

    by Preethi Kasireddy 通过Preethi Kasireddy 为什么要在JavaScript中使用静态类型? (使用Flow进行静态打字的4部分入门) (Why use stati ...

  8. JavaScript中的字符串操作(转)

    http://www.cnblogs.com/xuebin/articles/1296837.html 最近编一个javascript的翻译程序,发现无法正确比较两个字符串的相等,上网查了查,发现这篇 ...

  9. JavaScript中的面向对象程序设计

    本文内容目录顺序: 1.Object概念讲述: 2.面向对象程序设计特点: 3.JavaScript中类和实例对象的创建: 4.原型概念: 5.原型API: 6.原型对象的具体使用:7.深入理解使用原 ...

最新文章

  1. 在图像旁边垂直对齐文字?
  2. Javascript调用OCX控件
  3. 小程序下的兼容性问题
  4. 【翻译】基于 Create React App路由4.0的异步组件加载(Code Splitting)
  5. 微信公众号管理系统 RhaPHP1.2.5更新啦!
  6. 软件测试自动化的成功经验
  7. Liunx 命令大全
  8. sklearn学习笔记之metrics
  9. 2018-2019-1 20165212 《信息安全系统设计基础》第八周学习总结(pwd)
  10. AngularJS 模板
  11. 避免大规模故障的微服务架构
  12. liunx上mysql源码安装mysql_搞定linux上MySQL编程(一):linux上源码安装MySQL
  13. Qt QPushButton 解决触摸屏点击 pressed样式表无效
  14. dell进入u盘启动模式_Dell戴尔笔记本bios设置u盘启动详细步骤
  15. WPS-word使用多级编号级联
  16. js 中如何筛选处理符合条件的数据
  17. Rhythmbox中文乱码解决
  18. html地图周边搜索,高德地图API实现定位、地点搜索和周边搜索(H5/Vue/微信小程序)...
  19. Scheme:点对(dotted pair,或pair)
  20. mmdetection2.24.1修改backbone(使用mmcls和timm已有模型)

热门文章

  1. node n 切换node版本失败_node版本如何升级
  2. sql里查询一个组和组的用户数怎么查?_【牛客网SQL刷题】留存率怎么算?
  3. java 判断 年份,java怎么判断指定年份是否是闰年
  4. python元组和列表教程_Python列表和元组
  5. 计算机的收获初一作文,初一关于收获的作文
  6. 查看mysql view作用_Mysql中View视图的作用
  7. linux线程一直在增加,在.net core中遇到的奇怪问题:内存与线程数一直增长
  8. yolo 识别 狗狗自行车
  9. 双代号网络图节点编号原则_『干货』二级建造师考试高频考点 双代号网络图的详细解析...
  10. 推荐系统笔记(开源工具)