0

要素テキストの一部としてEnDashとEmDashの文字を含むxmlファイルがあります。次のようにUTF-8コードに変換されます。

<TextValue>This is an En Dash:  \xE2\x80\x93    This is an Em Dash: \xE2\x80\x94.</TextValue>

JavaScriptを使用してこれらのUTF-816進コードに対処し、必要なフリーテキストに置き換えたいと思います。

誰かがそれを行うためのアプローチを提案できますか?RegExを使用しようとしましたが、それらのコードを解析できませんでした。ただし、RegExを使用して他のテキストに対処することはできます。

ありがとうございました。

4

2 に答える 2

1

デモ

var text = "<TextValue>This is an En Dash:  \xE2\x80\x93    This is an Em Dash: \xE2\x80\x94.</TextValue>"

var fromArr = ["\xe2\x80\x98", "\xe2\x80\x99", "\xe2\x80\x9c", "\xe2\x80\x9d", "\xe2\x80\x93", "\xe2\x80\x94", "\xe2\x80\xa6"],
    toArr = ["'", "'", '"', '"', '-', '--', '...'];

    for (var i=0;i<fromArr.length;i++) {
        text = text.replace(fromArr[i],toArr[i],"g")
    }
        alert(text)

への変更

 var fromArr = ["\xe2\x80\x93", "\xe2\x80\x94"], toArr = [ '-', '--'];

スマートクォート省略記号が必要ない場合

結果:

ここに画像の説明を入力してください

于 2012-08-17T05:21:44.283 に答える
0

私はついにUTF-8でメッセージの本文を読み、Unicodeを置き換えるために次の行を使用することで逃げました。

body = body.replace(/\u00E1/g,"a");  //LATIN SMALL LETTER A WITH ACUTE
body = body.replace(/\u00E2/g,"a");  //LATIN SMALL LETTER A WITH CIRCUMFLEX
body = body.replace(/\u00E3/g,"a");  //LATIN SMALL LETTER A WITH TILDE
body = body.replace(/\u201D/g,"\"");  //RIGHT DOUBLE QUOTATION MARK
body = body.replace(/\u201C/g,"\"");  //LEFT DOUBLE QUOTATION MARK
body = body.replace(/\u2424/g," ");  //NEW LINE \n
body = body.replace(/\u000D/g," ");  //CARRIAGE RETURN \r
于 2012-08-23T20:53:22.313 に答える