JavaScript concat string with backspace
我有一个函数f类似于
1 2 3 | function f(str){ alert("abc"+str); } |
现在,我想使用javascript特殊字符"",这样我就可以选择是否要显示硬编码字符串"abc"。例如,
1 | f("\b\b"+"yz"); //should output"ayz" |
号
我也试过,但没用。换句话说,我想用退格字符来连接一个字符串,以便从字符串中删除最后一个字符。
我们可以用JavaScript来实现这一点吗?
编辑真正的代码太大了(它是一个巨大的1行程序,可以连接许多字符串)。在上面的例子中,为了映射这个函数,我们不能编辑函数f,所以从函数f的外部执行您想要的任何操作。
问题来自这样一个事实:
您将需要自己实现退格行为。
1 2 3 4 5 6 7 8 | function RemoveBackspaces(str) { while (str.indexOf("\b") != -1) { str = str.replace(/.?\x08/,""); // 0x08 is the ASCII code for \b } return str; } |
示例:http://jsfiddle.net/kendfrey/seldvy/
这样使用:
1 | var str = RemoveBackspaces(f("\b\byz")); // returns"ayz" |
。
像这样:
1 2 3 4 5 6 7 8 9 10 | function f(str, abc){ if(!abc) abc ="abc"; if (str.indexOf("\b") !="undefined") { abc = abc.slice(0,-1); str = str.replace("\b",""); f(str, abc); } else alert(abc+str); } |
作为额外的奖励,你可以使用递归!
注意,这样做比这样做慢一点:
1 2 3 4 5 6 7 8 9 10 11 | function f(str){ var count = 0; var abc ="abc"; for(var i = 0; i < str.length; i++) { if(str[i] ="\b") //at least i think its treated as one character... count++; } abc = abc.slice(0, count * -1); alert(abc+str); } |
号
有趣的问题。我首先检查了JS中关于的一些假设。
如果您尝试此操作:
console.log('abcyz');
你得到了同样的答案"abcyz"。
这意味着,它不是一个具体化的函数,而是方法中的一个基本错误。
我将修改您的方法以使用子字符串,然后获取的索引并切掉前一个字符。
编辑:我意识到这可能不是操作人员想要的,但在大多数情况下,这绝对是从字符串末尾删除字符的简单方法。
您可能只需要使用