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

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

  1. stringObject.localeCompare(target)

来解决中文比较问题。

  1. string_a.localeCompare(string_b);
  2.  
  3. /* Returns:
  4.  
  5. 0: exact match
  6.  
  7. -1: string_a < string_b
  8.  
  9. 1: string_b > string_b
  10.  
  11. */

这个方法的用法是:确定两个字符串在当前区域设置中是否相等。

微软资料如下:

http://msdn.microsoft.com/zh-cn/library/ie/62b7ahzy(v=vs.94).aspx

localeCompare 方法 (String) (JavaScript)

确定两个字符串在当前区域设置中是否相等。

 
 
  1. 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

 
  1. var str1 = "def";
  2. var str2 = "abc"
  3.  
  4. document.write(str1.localeCompare(str2) + "<br/>");
  5.  
  6. // Output: 1
  7. var str3 = "ghi";
  8.  
  9. document.write(str1.localeCompare(str3)+ "<br/>");
  10.  
  11. // Output: -1
  12. var str4 = "def";
  13.  
  14. document.write(str1.localeCompare(str4));
  15.  
  16. // Output: 0

下面的代码显示如何使用具有德语(德国)区域设置的 localeCompare

 
  1. var str1 = "a";
  2. var str2 = "b";
  3.  
  4. document.write(str1.localeCompare(str2, "de-DE"));
  5.  
  6. // Output
  7. // - 1

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

 
  1. var arr = ["ä", "ad", "af", "a"];
  2.  
  3. document.write(arr[0].localeCompare(arr[1], "de-DE-u-co-phonebk")); // Returns 1
  4. document.write (arr[0].localeCompare(arr[2], "de-DE-u-co-phonebk")); // Returns -1
  5. document.write (arr[0].localeCompare(arr[3], "de-DE-u-co-phonebk")); // Returns 1
  6.  
  7. document.write (arr[0].localeCompare(arr[1], "de-DE")); // Returns -1
  8. document.write (arr[0].localeCompare(arr[2], "de-DE")); // Returns -1
  9. 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中涉及到汉字的比较的更多相关文章

  1. JavaScript中涉及得运算符以及运算符的优先级

    在js中主要有三种运算符:算术运算符,逻辑与比较运算符,位运算符.在着三种运算符中,最常见的应该是算术与比较运算符,位运算符比较少见一些 *说到了运算符,就不得不说运算符的优先级.下面我来列一下这些运 ...

  2. 精通 JavaScript中的正则表达式

    精通 JS正则表达式 (精通?标题党 ) 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证  ...

  3. Javascript中的string类型使用UTF-16编码

    2019独角兽企业重金招聘Python工程师标准>>> 在JavaScript中,所有的string类型(或者被称为DOMString)都是使用UTF-16编码的. MDN DOMS ...

  4. javascript中的this与函数讲解

    前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...

  5. JavaScript中String对象的方法介绍

    1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...

  6. 详解Javascript中正则表达式的使用

    正则表达式用来处理字符串特别好用,在JavaScript中能用到正则表达式的地方有很多,本文对正则表达式基础知识和Javascript中正则表达式的使用做一个总结. 第一部分简单列举了正则表达式在Ja ...

  7. 深入理解javascript中的焦点管理

    × 目录 [1]焦点元素 [2]获得焦点 [3]失去焦点[4]焦点事件 前面的话 焦点作为javascript中的一个重要功能,基本上和页面交互都离不开焦点.但却少有人对焦点管理系统地做总结归纳.本文 ...

  8. 让你分分钟学会Javascript中的闭包

    Javascript中的闭包 前面的话: 闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它 ...

  9. JavaScript中的匿名函数及函数的闭包

    1.匿名函数 函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途.匿名函数:就是没有函数名的函数. 1.1 函数的定义,首先简单介绍一下函数的定义,大致可分为三种方式 第一种: ...

随机推荐

  1. 简单学C——第三天

    控制结构(二)     前面我们已经了解到了,控制结构中的判断结构,当然switch语句也是判断语句.不过如果if...else...语句你会了,我相信switch语句你也一定会的,它们的功能都是差不 ...

  2. 如何与 DevOps 为伍?

    DevOps 是一个席卷 IT 界的新术语.但它究竟是什么,南非的公司们如何利用它来加快高品质应用程序的开发速度?国外知名博客作者凯西·吉布森找到了一些答案. 其实 DevOps 这个词已经火了一段时 ...

  3. ExecutorService介绍2

    Thread和ExecutorService的区别 使用Thread,当子线程执行结束后,主线程如果没有其他执行任务,主线程会终止. /** * Created by litao on 15/10/7 ...

  4. VC++6.0 编写插件(图文并茂)

    下午偶然注意到VC++6.0新建工程标签页下的DevStudio Add-in Wizard,没有接触过,看名字是给Developer Studio开发插件,心生喜感,于是百度之,发生百度检索几乎找不 ...

  5. mysql中的timestamp类型时间比较:unix_timestamp函数

    在mysql中,某字段的类型设置为了timestamp,那么我们现在希望取出指定时间段的记录,该如何做呢? 在php中有time()和strtotime()来进行日期和时间戳的格式化,而在mysql中 ...

  6. codeforces -- 283A

    A. Cows and Sequence time limit per test 3 seconds memory limit per test 256 megabytes input standar ...

  7. tyvj P1952 Easy(递推+期望)

    P1952 Easy 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:(我们来简化一下 ...

  8. typedef用法小结

    typedef用法小结- - 注意:本文转自网络,版权归原作者所有. typedef typedef用法小结- - 这两天在看程序的时候,发现很多地方都用到typedef,在结构体定义,还有一些数组等 ...

  9. 《A First Course in Probability》-chape1-组合分析-二项式定理

    二项式系数的概念给人最直观的概念就是,这里有n个物品,分成两组,其中一组的数量是i的所有组合情况. 它的证明过程既可以从组合分析的角度,也可以从数学归纳的角度,由于数学归纳涉及到计算比较困难,我们这里 ...

  10. 黑马程序员_<<GUI(图形用户管理)-----2>>

    --------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 8.对话框 对列出目录内容增加了对话框提示, ...