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])
- 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。
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中涉及到汉字的比较的更多相关文章
- JavaScript中涉及得运算符以及运算符的优先级
在js中主要有三种运算符:算术运算符,逻辑与比较运算符,位运算符.在着三种运算符中,最常见的应该是算术与比较运算符,位运算符比较少见一些 *说到了运算符,就不得不说运算符的优先级.下面我来列一下这些运 ...
- 精通 JavaScript中的正则表达式
精通 JS正则表达式 (精通?标题党 ) 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证 ...
- Javascript中的string类型使用UTF-16编码
2019独角兽企业重金招聘Python工程师标准>>> 在JavaScript中,所有的string类型(或者被称为DOMString)都是使用UTF-16编码的. MDN DOMS ...
- javascript中的this与函数讲解
前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...
- JavaScript中String对象的方法介绍
1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...
- 详解Javascript中正则表达式的使用
正则表达式用来处理字符串特别好用,在JavaScript中能用到正则表达式的地方有很多,本文对正则表达式基础知识和Javascript中正则表达式的使用做一个总结. 第一部分简单列举了正则表达式在Ja ...
- 深入理解javascript中的焦点管理
× 目录 [1]焦点元素 [2]获得焦点 [3]失去焦点[4]焦点事件 前面的话 焦点作为javascript中的一个重要功能,基本上和页面交互都离不开焦点.但却少有人对焦点管理系统地做总结归纳.本文 ...
- 让你分分钟学会Javascript中的闭包
Javascript中的闭包 前面的话: 闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它 ...
- JavaScript中的匿名函数及函数的闭包
1.匿名函数 函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途.匿名函数:就是没有函数名的函数. 1.1 函数的定义,首先简单介绍一下函数的定义,大致可分为三种方式 第一种: ...
随机推荐
- ”ENV_IS_EMBEDDED“解惑以及相关的移植实验
一.概述( ENV_IS_EMBEDDED的目的) 经典资料 认识 ENV_IS_EMBEDDED只有在CFG_ENV_IS_IN_FLASH或者CFG_ENV_IS_IN_NAND定义了才有 ...
- webform的三级联动
webform的三级联动 与winform一样,只不过需把DropDownList的AutoPostBack属性改为True. *简单日期的编写方法:用是三个DropDownList分别代表年月日,用 ...
- java子类实例初始化过程
子类的实例化主要分为两个步骤: <1>.类相关静态内容 初始化: *先父类再子类: 1.父类的static属性: 2.父类的static块: 3.子类的static属性: 4 ...
- 2015_WEB页面前端工程师_远程测题_东方蜘蛛_1
请使用HTML+CSS实现如下效果: 1. 使用CSS Sprites,实现如图1效果,素材图片为: icons.png: 2. 使用脚本语言验证邮箱.密码的必填以及邮箱的合法性: 若验证失败,则出现 ...
- 使用spm build 批量打包压缩seajs 代码
一,安装环境 1.安装spm spm工具是基于node(nodejs的服务平台)的,因此我们需要先安装 node 和 npm 下载地址:http://nodejs.org/#download.下载完成 ...
- iOS内存管理系列之一:对象所有权与引用计数
当一个所有者(owner,其本身可以是任何一个Objective-C对象)做了以下某个动作时,它拥有对一个对象的所有权(ownership): 1. 创建一个对象.包括使用任何名称中包含“alloc” ...
- tomcat 系统架构与设计模式 第一部分 系统架构工作原理 转
Tomcat 系统架构与设计模式,第 1 部分: 工作原理 许 令波, Java 开发工程师, 淘宝网 许令波,现就职于淘宝网,是一名 Java 开发工程师.对大型互联网架构设计颇感兴趣,并对一些开源 ...
- WindowsPhone 8 开发 之 本地数据库应用
微软提供的有一个本地数据库的例子 http://code.msdn.microsoft.com/wpapps/Local-Database-Sample-57b1614c 可以进行参照. 里边最核心的 ...
- 转 ---- Asp.net mvc项目分页功能
1.定义一个分页用的Page<T>类 1 /* 使用示例: 2 var pager = new Pager<Article>( 3 this.ControllerContext ...
- jquery-pager分页
首先引用这三个文件 <script src="../../Scripts/jquery-1.4.4.min.js" type="text/javascript&qu ...