2016-08-10 52 views
0

我想检查我的String是否包含任何字母(N S W电子地图方向)。如果是这样,我想设置direction = that letter并返回true或false。打印字符串匹配正则表达式的一部分

例子:

输入: 15.15.15 N

输出我希望收到: N

输出direction = matcher.group();给我: 15.15.15 N

正如预期它打印出匹配的字符串正则表达式。我只想打印出匹配的部分。字母可以在字符串的开头或结尾。任何想法如何使它?

public boolean example (String value) { 

    Pattern parrent = Pattern.compile(".*[a-zA-Z].*"); 
    Matcher matcher = parrent.matcher(value);   

    if(matcher.find()) { 
     direction = matcher.group(); 
     System.out.println("direction" + direction); 
     return false; 
    } 
    else 
     return true; 
    } 
+0

这是否意味着您想获得字符串中的第一个'N','S','W'或'E'?你可以用['s.replaceFirst(“(?s)^(?:[^ NSWE] *([NSWE])。* |。*)”,“$ 1”)'](http:// ideone.com/nWtzQq) –

回答

3

您没有group那里!

试试这个位置,而不是:

​​

的一点是:你基本上

非空白无论

空间

的四个字母,你是一个感兴趣。

因此,你需要一个简单的模式,忽略任何你不关心的事情;和围绕你想要回来的元素。

+0

非常感谢。有用。我只需要将你的正则表达式改为'Pattern pattern = Pattern.compile(“[NSWE]”);' – dddeee

+0

不用客气;我很高兴你找到了适合你的更短的解决方案。 – GhostCat