不能幫助swank或Emacs,恐怕。我在NetBeans上使用Enclojure,它在那裏工作得很好。
匹配:正如亞歷克斯說,\w
不適用於非英語字符的工作,甚至沒有擴展字符集拉丁文西歐:
(re-seq #"\w+" "prøve") =>("pr" "ve") ; Norwegian
(re-seq #"\w+" "mañana") => ("ma" "ana") ; Spanish
(re-seq #"\w+" "große") => ("gro" "e") ; German
(re-seq #"\w+" "plaît") => ("pla" "t") ; French
的\ W跳過擴展字符。與日文相同,使用[(?u)\w]+
則沒有區別。
但見this regex reference:\p{L}
比賽類別信任何Unicode字符,因此它的實際工作對挪威
(re-seq #"\p{L}+" "prøve")
=> ("prøve")
以及日本(至少我想是這樣,我不能讀它,但它似乎是在球場):
(re-seq #"\p{L}+" "日本語 の 文章 に は スペース が 必要 ない って、 本當?")
=> ("日本語" "の" "文章" "に" "は" "スペース" "が" "必要" "ない" "って" "本當")
有許多其他的選擇,像組合語音標記和諸如此類的東西匹配,檢查出的參考。
編輯:使用Unicode工作時更多的Unicode在Java中
的快速參考可能感興趣的其他問題。
幸運的是,Java通常在正確的位置和平臺編碼中對文本進行閱讀和書寫的工作非常出色,但有時您需要重寫它。
這是所有的Java,大部分這些東西沒有Clojure包裝(至少現在還沒有)。
Java字符/字符串在內部是UTF-16。 char
類型(及其包裝字符)是16位,不足以表示所有的Unicode,所以很多非拉丁腳本需要兩個字符來表示一個符號。
在處理非拉丁Unicode時,通常最好使用code points
而不是字符。代碼點是一個用int表示的Unicode字符/符號。字符串和字符類具有用於在Java字符和Unicode代碼點之間轉換的方法。
我把這個放在這裏,因爲我偶爾需要這些東西,但是往往不足以真正記住從一次到另一次的細節。爲我未來的自我排序,對於其他從國際語言和編碼開始的其他人也可能有用。
不錯!是的,\ p {L}開關正是我想要的,實際上我對它在日本的工作感到有點驚訝。感謝您的鏈接。 – ivar 2010-06-24 03:59:29