我必须拆分一个包含短划线字符和减号的字符串。 我试图基于unicode字符(https://en.wikipedia.org/wiki/Hyphen#Unicode)进行拆分,仍然考虑减号与破折号字符相同。我怎么解决它?
预期输出
(COUN)
(US)
-1
实际输出
(COUN)
(US)
//实际上空白行将在此处打印,但SO编辑器会挤压空白行
1
public static void main(String[] args) {
char dash = '\u002D';
int i = -1;
String a = "(country)" + dash + "(US)" + dash + i;
Pattern p = Pattern.compile("\u002D", Pattern.LITERAL);
String[] m = p.split(a);
for (String s : m) {
System.out.println(s);
}
}
我想在字符串连接期间会发生一些转换,但不确定。 欢迎任何解决此问题的建议
答案 0 :(得分:0)
操作dash + i
被评估为数字加法。
我认为你的字符串应该是
String a = "(country)" + dash + "(US)" + dash + "" + i
;
生成您描述的输出。
答案 1 :(得分:0)
@anubhava部分正确,我使用了错误的unicode。 我应该使用" \ u2010"。现在一切都按预期工作了。
public static void main(String[] args) {
char dash = '\u2010';
int i = -1;
char dashesd = '-';
String a = "(coun)"+dash+"(US)"+dash+i;
System.out.println(a);
Pattern p = Pattern.compile("\u2010", Pattern.LITERAL);
String [] m= p.split(a);
for (String s : m) {
System.out.println(s);
}