3

次のような文字列を作成するよりも、Googleマップに線を引きます。

(25.368819800291383,130.55809472656256

最初の値は緯度、2 番目の値は経度です。サーバー上でアクセスできるように、この文字列に隠しフィールドの値を割り当てます。

緯度と経度の数値を取得するにはどうすればよいですか?

やってみた

 Match match = Regex.Match(points, @"(^(0|(-(((0|[1-9]\d*)\.\d+)|([1-9]\d*))))$,^(0|(-(((0|[1-9]\d*)\.\d+)|([1-9]\d*))))$)*", RegexOptions.IgnoreCase);
4

4 に答える 4

2

これを使用してください: ^(\-?\d+(\.\d+)?),\s*(\-?\d+(\.\d+)?)$(ここから取得)。正規表現の問題の 1 つは、 and を 2 回使用していること^です$。これらは文字列の開始と終了を示しているため、この場合、正規表現は機能しません。

上記の正規表現は数字を抽出し、グループを使用して利用できるようにする必要があります。

于 2012-05-21T13:52:17.413 に答える
1

これを試してみてください

\((?<lat>[-\d.]+),(?<long>[-\d.]+)\)

ここでは、名前付きグループを使用するのが好きです。緯度のみを取得するには

    Regex regexObj = new Regex(@"\((?<lat>[-\d.]+),(?<long>[-\d.]+)\)");
    Match matchResult = regexObj.Match(subjectString);
    while (matchResult.Success) {
        Console.WriteLine(matchResult.Groups["lat"].Value));
        matchResult = matchResult.NextMatch();
于 2012-05-21T13:58:47.043 に答える
0

これを試して:

Match match = Regex.Match(points, @"(-?\d+\.\d+)+", RegexOptions.IgnoreCase);

入力に対して、8 つの結果が得られます。各結果 = 経度または緯度

Match match = Regex.Match(points, @"((-?\d+\.\d+)+,?){2}", RegexOptions.IgnoreCase);

4 つの結果が得られます。各結果は、緯度、経度の形式のペアです。

于 2012-05-21T13:54:15.503 に答える