2017-10-25 17 views
-1

JSON文字列内のすべての数値を検索して二重引用符で置き換える正規表現がありますか?JSON文字列で置き換える正規表現

たとえば、以下のJSON文字列では、IdとPhoneの値を二重引用符で置き換えます。

String jsonString = " [ 
{ 
    "FirstName": "abc", 
    "Email" : "[email protected]", 
    "Id" : 1, 
    "Phone" : 1234567890, 
    "Date": "2 May 2016 23:59:59" 

}, 
{ 
    "FirstName": "xyz", 
    "Email" : "[email protected]", 
    "Id" : 2, 
    "Phone" :, 
    "Date": "3 May 2016 23:59:59" 

} 
] "; 

私は次の出力を取得したい:

[ 
    { 
     "FirstName":"abc", 
     "Email" : "[email protected]", 
     "Id" : "1", 
     "Phone" : "1234567890", 
     "Date": "2 May 2016 23:59:59" 

    }, 
    { 
     "FirstName":"xyz", 
     "Email" : "[email protected]", 
     "Id" : "2", 
     "Phone" : "", 
     "Date": "3 May 2016 23:59:59" 

    } 
    ] 

私は、以下の行を試みたが、それは動作しません。何か案は?

jsonString = jsonString.replaceAll("=[ ]*([\\d]+)", "= \"$1\""); 

答えて

3

あなたは間違って複数のことをやっています。 https://regex101.com/r/sRDXMP/2/

そしてここにあなたがいる:=代わり

  • :の始まる試合のため

    • あなたの正規表現の検索はここで、あなたの正しい正規表現である\s

    を使用し、白(スペース)をキャプチャするには固定コード:jsonString = jsonString.replaceAll(":\\s([\\d]+)", ": \"$1\"");

  • +0

    バックスラッシュ自体をエスケープするのはエラーではない、thats Javaの構文(残念ながら) –

    +0

    @ MichaelA.Schaffrathありがとう、コードスニペットを更新しました。 – Boratzan

    1

    また:
    して、正規表現で=を交換し、あなたの代わりに[ ]の空白セレクタを使用する必要があります。

    jsonString = jsonString.replaceAll(":\\s*(\\d+)", ": \"$1\"");

    +0

    私も日付オブジェクトを持っています。したがって、:は置き換えられません。私は再び自分の投稿を編集しました。 –

    +0

    それから、あなたの数字の後にカンマか右中括弧が必要です。 '':\\ s *(\\ d +)\ s * [、}] '' –

    関連する問題