只提取字符串的最后一部分

时间:2016-08-22 13:02:19

标签: javascript escaping

我正在尝试从Sharepoint的restful API返回的JSON属性中获取用户名。

我收到的属性/字符串:"i:0#.w|xyz\tzzjjaa"

我想要的是什么:"xyz\tzzjjaa"

我试过:"i:0#.w|xyz\tzzjjaa".replace("\\","\\\\"),它返回: "i:0#.w|corproot tzzjjaa"

为什么会这样? (反斜杠是一种逃避字符串中“t”的东西吗?) 如何修复它才能获得"xyz\tzzjjaa"

非常感谢。 :)

4 个答案:

答案 0 :(得分:2)

var str = String.raw`i:0#.w|xyz\tzzjjaa`;
console.log(str.split("|")[1]);

假设您希望使用String.raw函数保持反斜杠看a really good answer by T.J. Crowder,然后在管道上拆分字符串并获取结果数组的第二部分。

演示: https://jsfiddle.net/snjfveo6/

如果您不想使用反斜杠,可以删除String.raw部分并跳过拆分字符串。

答案 1 :(得分:0)

LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) leftView.getLayoutParams();
lp.width=newWidth;
leftView.setLayoutParams(lp);
leftView.requestLayout(); 

Demo

答案 2 :(得分:-1)

你确定它应该是"tzzjjaa"吗?引用的字符串文字(或JSON字符串)中的\t不是\后跟t,而是代表TAB(ASCII代码#09)字符!

答案 3 :(得分:-1)

JS字符串中的

\t被转义为制表符。

我认为最好的解决方案是在服务器端逃避它。

在你的情况下,你将不得不编写一个小的服务器脚本,它调用你使用过的API并转换/转义所有内容,为你的JS做好准备。而你的JS称这个小服务器脚本。

如果您的用户名肯定永远不会以反斜杠后面的x开头,那么:

使用JNewtons's answer并使用String.raw - 方法,或者更广泛的支持使用Stringify方法Sathvik Cheela

但如果在反斜杠之后有可能以x开头,那么你现在无法在JavaScript的前端解决这个问题 - 仅在后端