2

私は次のような文字列を持っています:

var myString= '{"key1":"value1", "key2":"value2", "key3":"value3"}';

私が欲しいのは、value3からのみdoubleqoutesと他の特殊文字を削除することです...たとえば、文字列が次のようになる場合があります。

var myString= '{"key1":"value1", "key2":"value2", "key3":"This is "value" with some special chars etc"}';

コロンの後とこれの前の二重引用符を削除したくないことに注意してください。同様に、最後の二重引用符を削除したくありません。文字列を変更して、次のようになります。

var myString = '{"key1":"value1", "key2":"value2", "key3":"This is value with some special chars etc"}';
4

3 に答える 3

2

単純...

var myNewString = eval( '('+ myString +')');

var toBeEscaped = myNewString.key3;

var escapedString = doYourCleanUpStuff(toBeEscaped);

myNewString.key3 = escapedString;

myNewString = JSON.stringify(myNewString);

===============

私は何をしましたか?

1) 文字列は有効な JSON のように見えます。

2) JSON オブジェクトにキャストします。(使用eval())

3) の値を取得key3し、一時変数でキャッチします。

4) この一時変数を使用してクリーンアップを行います。

5) クリーンアップされた一時変数を key3 に割り当てます。

6) JSON を文字列化します。

特に簡単な方法がある場合は、配列操作と分割関数でブッシュを打ち負かさないでください:)

于 2012-07-27T14:02:16.967 に答える
0

配列map関数を文字列関数と組み合わせて使用​​することをお勧めしreplaceます。

関数を使用するには、replaceおそらく正規表現を使用する必要があります。たとえば、次の正規表現は、コロンの直後ではない二重引用符を削除します: [^:]".

文字列の配列で直後にコロンが続かないすべての引用符を置き換えるには、次のように記述できます。

var myString= '{"key1":"value1", "key2":"value2", "key3":"value3"}';
var modified = myString.map(function(s) { return s.replace(/[^:]"/g, ''); });

正規表現を独自に変更して、削除する文字に一致させます。

http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/を参照してください。

于 2012-07-27T13:56:27.833 に答える
0

私の頭に浮かぶ最初のことは、あなたが望む価値を分離することです。

あなたが.Split()望む値のためにすることができます

var myString = '{"key1":"value1", "key2":"value2", "key3":"value3"}';var n=str.split(" ");
var key3Value = str.split(//値に基づく);

//key3Value に対して .replace() を実行して、二重引用符などを置き換えます。

// myString を再宣言して、更新された key3Value を含めます

申し訳ありませんが、現時点ではコードを完成させる時間がありません。私の回答よりも優れた/短い回答であると確信しています。これをオプションとして含めたかっただけです。

于 2012-07-27T14:02:35.367 に答える