2017-02-14 6 views
0

私は文字列の一部を抽出しようとしています。私はAndroid App(Java)でそれをやっています。Java(Android) - 2つの特定の単語の間にある文字列の一部を抽出する

場所[20.融合し、-30.9876 ACC = 20(...)

表し:

私の問題は、私はこのようなアウト始まる文字列を持っているだろうということですデバイスの現在の座標(私はそこで20と30を作った)といくつかの他の測定値。私はその文字列から2つの座標を抽出したい(彼らは常に "融合"と "acc"の間にある)、浮動小数点としてそれらを格納します。

これを解決するにはRegExsが必要だと考えましたが、以前は正規表現を一度しか使用していなかったことに留意してください。私はまだとても慣れていません。

これを解決する方法についてのガイダンスは非常に高く評価されます。

+0

String.split() https://www.tutorialspoint.com/java/java_string_split.htm –

+1

コーディネーターの前後に常にスペースがある場合は、両方のクオを取得できます正規表現を使用しない指導者。 'String location ="ロケーション[fused 20.、-30.9876 acc = 20 "; location = location.substring(location.indexOf( "")、location.lastIndexOf( "")); 文字列locationArr [] = location.split( "、");System.out.println( "lat:" + locationArr [0]); System.out.println( "long:" + locationArr [1]); ' –

答えて

1

RegExrは、学習や建物の正規表現のための素晴らしいサイトです:何ごとを見るためにRegExrに​​この表現を

fused\s(-?\d+\.\d+),(-?\d+\.\d+)\s 

コピー:あなたは2点の座標を与える http://regexr.com/

この正規表現を使って文字列をマッチングこれらの文字の意味の。 Javaでは

Javaで正規表現式を使用するには、あなたは、バックスラッシュ文字をエスケープを確認する必要があります(余分なバックスラッシュを追加)

public static void main(String[] args) { 
    String yourString = "Location[fused 20.,-30.9876 acc=20 "; 

    Pattern pattern = Pattern.compile("fused\\s(-?\\d+\\.\\d+),(-?\\d+\\.\\d+)\\s"); 
    Matcher matcher = pattern.matcher(yourString); 
    if(matcher.find()) { 
     String coordinate1 = matcher.group(1); 
     String coordinate2 = matcher.group(2); 
     System.out.println(coordinate1); 
     System.out.println(coordinate2); 
    } 
} 

出力:

20.
-30.9876 
+0

これは完全に機能します!ヒントをありがとう、私はそのサイトについて知らなかった。正規表現の練習には非常に便利です –

関連する問題