2

嘿大家快速提问,我知道这在 javascript 中听起来很奇怪,但我有很好的用途。我需要能够解析在 textarea 中传递的字符串,以便转义十六进制文字“\x41”或任何不作为四个字符 '\' 'x' '4' '1' 而是作为 'A' 处理的内容例如:

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 包含“A”而不是“\x41”......除了正则表达式之外还有什么想法吗?我想我会用一个正则表达式,我只是想要一种让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);

主要是我需要这个来解析混合字符串......就像在混合了十六进制的字符串文字中一样

于 2012-04-26T02:26:03.620 回答