2016-08-14 46 views
0

我有一个字符串,其第一个字符是“^”。我想提取没有这个字符的字符串。例如:“^煤”应该变成“煤”。以下是我写的代码,但我不知道为什么它不起作用。无法在java中使用此正则表达式提取字符串

public void RegEx(String s1){ 
     System.out.println(s1.substring(0,1)); //to check if i am ok. 
     if((s1.substring(0,1)).equals("^")){ 
      Pattern p = Pattern.compile("^"); 
      String[] extracted = p.split(s1); 
      for(String s: extracted){ 
       System.out.println(s); 
      } 
     } 
    } 

s1 =“^ coal”。输出=“^煤”。

+4

我不是一个JavaScript专家,但如果你想删除第一个字符,你不能只在你的'if'语句中执行's1 = s1.substring(1)'吗?例如,'“MyString”.substring(1);'计算结果为''yString'' – Santi

+0

这只是一个更大问题的一个片段。所以我真的需要知道官方的方式。谢谢您的好意。 –

回答

5

^字符在正则表达式的特殊含义,所以你需要逃避它:"\\^"

但是,正则表达式不是最有效的方法。只需使用substring

if (s1.startsWith("^")) { 
    s1 = s1.substring(1); 
} 
System.out.println(s1); 

注:当你看到上面的你也可以用startsWith如果一个字符串与其他一些字符串开头很容易地检查。

+0

知道我应该将我的评论发布为答案:) +1! – Santi

1

字符^在正则表达式中很重要。逃脱它,

Pattern p = Pattern.compile("\\^"); 
0

使用indexOf方法。它是短暂的,更高效的

String s="^coal"; 
int l=s.indexOf("^"); 
System.out.println(s.substring(l+1)); 
相关问题