2

みなさん、簡単な質問です。これはjavascriptで行うのは奇妙に聞こえますが、私はそれをうまく利用しています。テキストエリアに渡された文字列を、16進リテラル"\x41"または4文字としてではなく'\''x''4''1'として処理されるものをエスケープするように解析できる必要があります。例えば:

var anA = "\x41";
console.log(anA); //emits "A"
var stringToParse = $(#someTextArea).val(); //using jquery for ease not a req
//lets say that "someTextArea" contains "\x41"
console.log(stringToParse); // equals "\" "x" "4" "1" -- not what i want
console.log(new String(stringToParse)); same as last
console.log(""+stringToParse); still doesnt work
console.log(stringToParse.toString()); failz all over (same result)

stringToParseに「\x41」ではなく「A」を含める方法が欲しいのですが...正規表現以外のアイデアはありますか?私は私が推測する正規表現を取ります、私はちょうどjavascriptに私の入札をさせる方法が欲しかったです:)

4

2 に答える 2

6
String.prototype.parseHex = function(){
    return this.replace(/\\x([a-fA-F0-9]{2})/g, function(a,b){
        return String.fromCharCode(parseInt(b,16));
    });
};

そして実際には:

var v = $('#foo').val();
console.log(v);
console.log(v.parseHex());
于 2012-04-26T02:13:15.567 に答える
1

私はそれを理解しましたが、その種類はハッキーで、私はevalを使用しています:(...誰かがもっと良い方法を持っているなら私に知らせてください:

stringToParse = stringToParse.toSource().replace("\\x", "\x");
stringToParse = eval(stringToParse);
console.log(stringToParse);

主に、混合文字列を解析するためにこれが必要でした...16進数が混合された文字列リテラルのように

于 2012-04-26T02:26:03.620 に答える