拆分包含短划线和减号的字符串

时间:2018-02-12 11:02:49

标签: java regex

我必须拆分一个包含短划线字符和减号的字符串。 我试图基于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);
        }
    }

我想在字符串连接期间会发生一些转换,但不确定。  欢迎任何解决此问题的建议

2 个答案:

答案 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);
        }