0

私は文字列を持っています:

str="{\"type\":\"Polygon\",\"coordinates\":[[[60.677938980978993,56.834449959232998],
[60.680103564162927,56.834305549577387],[60.679971577383398,56.833005837614643],
[60.679813193248009,56.832846980836457],[60.678546120164683,56.832760331400671],
[60.678229351893869,56.831850500219574],[60.677622212708137,56.831893826015182],
[60.676830292031028,56.832139337910085],[60.67624955020122,56.832818097713471],
[60.676275947556981,56.833655699235088],[60.676328742268893,56.834724336044253],
[60.677411033860842,56.834695454369324],[60.677490225928629,56.834478841097273],
[60.677938980978993,56.834449959232998]]]}"

今、私はすべてを削除したい\:

str.replaceAll("\\",""); 

そしてエラーを取得します:

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\

わかりました。もう 1 つは、最初と最後の引用符を削除することです。

str.substring(str.indexOf("\""),str.lastIndexOf("\""));

そして、私は文字列を取得します:

"{\"type\":\"Polygon\",\"coordinates\":[[[60.677938980978993,56.834449959232998],
[60.680103564162927,56.834305549577387],[60.679971577383398,56.833005837614643],
[60.679813193248009,56.832846980836457],[60.678546120164683,56.832760331400671],
[60.678229351893869,56.831850500219574],[60.677622212708137,56.831893826015182],
[60.676830292031028,56.832139337910085],[60.67624955020122,56.832818097713471],
[60.676275947556981,56.833655699235088],[60.676328742268893,56.834724336044253],
[60.677411033860842,56.834695454369324],[60.677490225928629,56.834478841097273],
[60.677938980978993,56.834449959232998]]]"

最後だけ}削除しました。

このコード スニペットで何が間違っていますか?

4

4 に答える 4

3

試しましたstr.replaceAll("\\\\","");か?( https://stackoverflow.com/a/3640386/500478を参照)

于 2013-01-22T11:02:36.990 に答える
1

のいずれかを使用して、

str.replaceAll("\\.", "");

また

 str.replaceAll("\\\\", "");

と入力する"\\"と、これは実際には 1 つのバックスラッシュになります (Java 文字列で特殊文字をエスケープするため)。

正規表現ではバックスラッシュも特殊文字として使用されるため、別のバックスラッシュを使用するか、バックスラッシュを使用してエスケープする必要があります。そのため、最後に単一のバックスラッシュに一致するパターンとしてor DOT(.)を渡す必要があります。"\\\\""\\."

于 2013-01-22T11:04:54.243 に答える
1
       System.out.println(str.replaceAll("\\\\", ""));

出力:

{"type":"Polygon","coordinates":[[[60.677938980978993,56.834449959232998], [60.680103564162927,56.834305549577387],[60.679971577383398,56.833005837614643],[60.679813193248009,56.832846980836457],[60.678546120164683,56.832760331400671],
[60.678229351893869,56.831850500219574] ,[60.677622212708137,56.831893826015182],
[60.676830292031028,56.832139337910085],[60.67624955020122,56.832818097713471],
[60.676275947556981,56.833655699235088],[60.676328742268893,56.834724336044253], [60.677411033860842,56.834695454369324],[60.677490225928629,56.834478841097273],[60.677938980978993,56.834449959232998]]] }

于 2013-01-22T11:05:04.853 に答える
1
str.replace("\\", "");

あなたのケースではうまくいきます。

public String replace(CharSequence target,CharSequence replacement)

リテラル ターゲット シーケンスに一致するこの文字列の各部分文字列を、指定されたリテラル置換シーケンスに置き換えます

String s = "abc" + "\\" + "def";
System.out.println(s);

そして、それは以下を出力します -

abc\def

\ は、文字列と正規表現の両方でエスケープ文字です。

于 2013-01-22T11:07:17.840 に答える