使用split函数进行Java编译失败

时间:2014-09-22 13:32:28

标签: java

我有以下代码,但它不起作用。不确定这里有什么问题:

import java.util.*;
import java.lang.*;
import java.io.*;


class Ideone
{
  public static void main (String[] args) throws java.lang.Exception
  {
    String ext_time = "23:24:25+26";
    String short_time[] = ext_time.split("+");
    System.out.print(short_time[0]);
  }
}

我想在23:24:25 + 22中采用字符串23:24:25。我该怎么做?

3 个答案:

答案 0 :(得分:4)

您需要转义+字符:

String short_time[] = ext_time.split("\\+");

通常情况下,加+字符是regex中的量词,表示at least one of the previous character/group。因此要与角色分开,需要进行转义。由于反斜杠\本身就是一个特殊字符,因此它也需要进行转义。因此,"\\+"

答案 1 :(得分:1)

Firts不是括号short_time[]

的好名称变量

但是好的,我运行了你的代码并且:在线程中出现异常" main" java.util.regex.PatternSyntaxException:悬空元字符' +'接近指数0

' +'是一个regEx的元字符,就像bar或dot一样,你必须使用ext_time.split("\\+");

来逃避它

答案 2 :(得分:1)

在拆分命令中,没有转义的“+”意味着:

'+' - >发生一次或多次,是{1,} X +的缩写 - 查找一个或多个字母X

请在你的正则表达式中转义'+'字符,因此你的新代码将是

String short_time[] = ext_time.split("\\+");

有关拆分正则表达式的更多详细信息,请参阅以下链接: http://www.vogella.com/tutorials/JavaRegularExpressions/article.html