2016-08-10 118 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