2

私は次のような文字列を与えられています:

"lang":"fr","fizz":"1","buzz":"Thank you so much."

実際の文字列はかなり長いですが、コンマで区切られ"key":"value"たペアのこのパターンに従います。s を囲むすべての二重引用符を取り除き、すべてのs をkey囲む二重引用符valueを単一引用符に置き換えて、文字列が次のようになるようにします。

lang:'fr',fizz:'1',buzz:'Thank you so much.'

私の最善の試み:

kvString = kvString.replaceAll("\"*\":", "*:");
kvString = kvString.replaceAll(":\"*\"", ":'*'");

System.out.println(kvString);

これを実行すると、次kvStringのようになります。

"lang*:'*'fr","fizz*:'*1","buzz*:'*Thank you so much."

誰かが私が間違っている場所を見つけることができますか? 前もって感謝します。

4

2 に答える 2

6
String str = "\"lang\":\"fr\",\"fizz\":\"1\",\"buzz\":\"Thank you so much.\"";
System.out.println(str.replaceAll ("\"([^\"]*)\":\"([^\"]*)\"", "$1:'$2'"));
于 2013-02-15T13:10:50.220 に答える
0

あなたがしたいことは、カンマ区切りの文字列を正規表現を使用して一連のキーワードと値のペアに分割することです。コンマで区切られた各文字列は「キーワード」:「値」の形式であり、これをキーワード:「値」に変換します。

これを行うには、正規表現にキーワードを記憶させ、値を記憶させてから、replaceAll の出力で文字列のこれらの部分を別の文字列に戻す必要があります。

このスタック オーバーフローの非キャプチャグループは、グループに関する詳細情報を提供します。また、この記事ではグループ化構文についても説明しています

于 2013-02-15T13:24:23.567 に答える