2012-01-23 86 views
2

我目前正在使用JavaScript的IM客戶端界面中重寫用戶列表實現。此列表中的名稱目前按字母順序排序,我希望對其進行編輯,以便在比較字符串時僅考慮字母字符。Javascript:如何僅比較字母字符上的字符串?

例如:「1foo」在「bar」之後來到,因爲「foo」在「bar」之後。

我知道我可以通過從兩個原始字符串中刪除所有非字母字符來創建兩個臨時字符串,但我猜測必須有更簡單的方法來執行此操作。

+0

您可以發佈您當前使用的代碼進行排序嗎? – j08691

+0

你想要字符串開頭的字符串在字符串之前還是之後?你想要發生什麼? – mowwwalker

+0

你可以在javascript中使用自定義排序函數:http://www.javascriptkit.com/javatutors/arraysort.shtml – mowwwalker

回答

7

好吧,如果你有一個字符串名爲arr數組,您可以使用此一班輪:

arr.sort(function(a,b) {return a.replace(/[^a-z]/ig,'') > b.replace(/[^a-z]/ig,'') ? 1 : -1;}); 

arr現在進行排序只取字母考慮。

+0

請注意,如果數組是一個大數組,那麼這種排序可能確實很慢,因爲在排序算法中的每個比較都會發生兩次正則表達式替換操作,從而導致臨時創建字符串。 – jfriend00