我正在处理从 API 收到的一些内容。在主文本字段的末尾,api 有时会返回以下字符串:
@@canvas-link@@{"type":"doc","fileName":"xyzv2.jpg","fileExt":"jpg",
"fileSize":"232352",
"file":"405957767101","downloadUrl":"dummytext"}
从主文本字段中删除此字符串的最佳方法是什么?
我正在处理从 API 收到的一些内容。在主文本字段的末尾,api 有时会返回以下字符串:
@@canvas-link@@{"type":"doc","fileName":"xyzv2.jpg","fileExt":"jpg",
"fileSize":"232352",
"file":"405957767101","downloadUrl":"dummytext"}
从主文本字段中删除此字符串的最佳方法是什么?
str = str.replace(/@@canvas-link@@.*/, '');
如果你确定它在最后,这个版本是最快的;
s.substring(0, s.lastIndexOf("@@canvas-link@@")) ; // FASTER than most
但更新只是为了好玩,我有另一个变体使用slice()
它在这个测试中甚至比substring()
.
s.slice(0,s.lastIndexOf("@@canvas-link@@")); // FASTEST
这是一个jsPerf,它显示他们击败了 RegEx 和 split。虽然我很惊讶分裂并没有更快。
但是,您的里程可能会有所不同,对于更复杂的场景,我希望 RegEx(替换)能够脱颖而出。
改进约瑟夫·西尔伯斯,
str = str.replace(/@@canvas-link@@{.*}/, '');
以确保它不会在之后删除任何东西。
您可以使用正则表达式,但 asplit()
将避免回车的复杂性。
var str = 'foobar@@canvas-link@@{"type":"doc","fileName":"xyzv2.jpg","fileExt":"jpg",
"fileSize":"232352",
"file":"405957767101","downloadUrl":"dummytext"}';
var data = str.split('@@canvas-link@@')[0];
console.log(data);
>> foobar