我需要在java中将带有“ - ”的字符串拆分为分隔符。 例如:“单人间 - 享受您的住宿”
根据区域设置,我有相同的英语和德语数据。因此我不能使用通常的string.split(“ - ”)。 “ - ”字符的unicode是8212(dec)或x2014(hex)。如何使用unicode拆分字符串???
答案 0 :(得分:5)
您可能会误认为您正在使用哪个Unicode短划线字符。从Unicode v6.1开始,有27个代码点具有\p{Dash}
属性:
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}
上拆分,但由于Sun 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预处理器妨碍你,你实际上可以加倍反斜杠,因为正则表达式解析器应该知道理解备用符号。
答案 1 :(得分:3)
Pattern p = Pattern.compile("\u0001", Pattern.LITERAL);
String items[] = p.split(message);
答案 2 :(得分:1)
String s = "Single Room - Enjoy your stay":
String splits[] = s.split("\u002D");
for(String s1:splits){
System.out.println(s1);
}
答案 3 :(得分:0)
“ - ”的十六进制是二进制的2d(或)45(或八进制的55)。使用以下程序查找所有符号的整数值。因此,使用\ 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;
}
}