javascript
javascript中涉及到汉字的比较
在使用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必需。?要比較的第一個字符串。
必需。?要比較的第二個字符串。
可選。?包含一種或多種語言或區域設置標記的區域設置字符串數組。?如果包含多個區域設置字符串,請以降序優先級對它們進行排列,確保首個條目為首選區域位置。?如果省略此參數,則使用 JavaScript 運行時的默認區域設置。?此參數必須符合?BCP 47?標準;請參見?Intl.Collator 對象了解詳細信息。
可選。?包含指定比較選項的一個或多個特性的對象。請參見?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中涉及到汉字的比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里巴巴消息系统架构与变迁--转载
- 下一篇: windows 下rabbitmq 安装