我需要在java中用「 - 」分隔字符串作爲分隔符。 例如:「單人間 - 享受您的逗留」使用Unicode分隔符的溢出字符串
我有相同的數據來在英語和德語取決於語言環境。因此我不能使用通常的string.split(「 - 」)。 「 - 」字符的Unicode是8212(十進制)或x2014(十六進制)。如何使用unicode分割字符串?
我需要在java中用「 - 」分隔字符串作爲分隔符。 例如:「單人間 - 享受您的逗留」使用Unicode分隔符的溢出字符串
我有相同的數據來在英語和德語取決於語言環境。因此我不能使用通常的string.split(「 - 」)。 「 - 」字符的Unicode是8212(十進制)或x2014(十六進制)。如何使用unicode分割字符串?
String s = "Single Room - Enjoy your stay":
String splits[] = s.split("\u002D");
for(String s1:splits){
System.out.println(s1);
}
「 - 」的十六進制是十進制的(或)45的二進制(或)45。使用以下程序爲所有符號查找整數值。所以使用\ u002d
public static void main(String[] args) {
int j=0;
for(int i=32; i<=131;i++)
{
System.out.print(i + ":\t" + (char)i +" ");
j++;
if(j>10)
{
System.out.println();
j=0;
}
}
您可能會誤認爲您正在獲取哪個Unicode短劃線字符。爲Unicode V6.1中,有有\p{Dash}
財產27個點:
U+002D - HYPHEN-MINUS
U+058A ֊ ARMENIAN HYPHEN
U+05BE ־ HEBREW PUNCTUATION MAQAF
U+1400 ᐀ CANADIAN SYLLABICS HYPHEN
U+1806 ᠆ MONGOLIAN TODO SOFT HYPHEN
U+2010 ‐ HYPHEN
U+2011 ‑ NON-BREAKING HYPHEN
U+2012 ‒ FIGURE DASH
U+2013 – EN DASH
U+2014 — EM DASH
U+2015 ― HORIZONTAL BAR
U+2053 ⁓ SWUNG DASH
U+207B ⁻ SUPERSCRIPT MINUS
U+208B ₋ SUBSCRIPT MINUS
U+2212 − MINUS SIGN
U+2E17 ⸗ DOUBLE OBLIQUE HYPHEN
U+2E1A ⸚ HYPHEN WITH DIAERESIS
U+2E3A ⸺ TWO-EM DASH
U+2E3B ⸻ THREE-EM DASH
U+301C 〜 WAVE DASH
U+3030 〰 WAVY DASH
U+30A0 ゠ KATAKANA-HIRAGANA DOUBLE HYPHEN
U+FE31 ︱ PRESENTATION FORM FOR VERTICAL EM DASH
U+FE32 ︲ PRESENTATION FORM FOR VERTICAL EN DASH
U+FE58 ﹘ SMALL EM DASH
U+FE63 ﹣ SMALL HYPHEN-MINUS
U+FF0D - FULLWIDTH HYPHEN-MINUS
在Perl或ICU,你可以只直接劈在\p{dash}
,但由於太陽Pattern
類不支持完整的Unicode這樣的屬性,你必須用枚舉的方括號字符類來綜合它。因此在模式上分裂:
string.split("[\u002D\u058A\u05BE\u1400\u1806\u2010-\u2015\u2053\u207B\u208B\u2212\u2E17\u2E1A\u2E3A-\u301C\u3030\u30A0\uFE31\uFE32\uFE58\uFE63\uFF0D]")
應該爲你做的伎倆。如果您擔心Java預處理器會妨礙您的行爲,那麼實際上可以雙擊反斜槓,因爲正則表達式解析器應該知道要理解備用符號。
Pattern p = Pattern.compile("\u0001", Pattern.LITERAL);
String items[] = p.split(message);
我假設你嘗試使用'「\ u2014」'作爲分隔符,對吧? – dasblinkenlight 2012-03-08 04:27:01
是的。我試圖做string.split(「\ u2014」)。但它沒有工作。 – Bhavya 2012-03-08 04:32:58