如何在JavaScript中删除字符串的最后一部分?

独角兽

我有几串;它们可以是,例如:

1. artist_submission_design&IDshow=79025 OR
2. artist_design&IDshow=102 OR
3. status_design_001&IDshow=1

如何使用JavaScript或jQuery删除“&”之后的所有内容?

这是我尝试过的:

var newxx = xx.replace("&IDshow=", "");

但这是行不通的,因为之后的数字=可能会有所不同,所以我不知道该如何解决。

一些

有几种删除字符串最后部分的方法。他们都有优点和缺点。

假设我们有以下字符串:

var myString = "artist_submission_design&IDshow=79025";

代替

字符串对象replace -method方法将字符串的一部分替换为另一部分。它带有两个参数。第一拳既可以是字符串,也可以是描述应该替换字符串的哪一部分的正则表达式。第二个参数用于替换匹配的内容。它可以是字符串或函数。

在下面的示例中,匹配使用正则表达式进行,该正则表达式匹配&-character和之后的每个字符,并且匹配项将替换为空字符串。

var result = myString.replace(/&.*/,"");

正则表达式很灵活,您可以进行复杂的模式匹配。但是执行起来可能很慢。

分裂

字符串对象split方法将一个字符串拆分为一个或多个字符串,并返回包含这些字符串的数组。它需要一个或两个参数。第一个是分隔符,即应该分割的字符串。它可以是单个字符或多个字符的字符串。第二个参数limit是可选的,它限制了数组中将返回的字符串数。是否在输入字符串中重复分隔符重要例如,如果分隔符为“&”,则“ songname&artist = name&album = album&label = label”将返回包含4个字符串的数组。如果只对第一个字符串感兴趣,则没有理由获取包含多个字符串的数组。

在下面的示例中,myString在every上拆分&,但我们将其限制为一个字符串。而且由于split返回一个数组,我们只对数组的第一个元素感兴趣,因此我得到了数组的第一个元素[0](在javascript中,数组的索引是从零开始的)。

var result= myString.split('&',1)[0];

split 如果将一个字符串分解成几个字符串,则可以快速使用。

substring字符串对象substring方法返回字符串的一部分。它可以与indexOf(用于搜索指定的字符串)一起使用,以确定应返回字符串的哪一部分。这个方法是由杰伊·布兰查德Jay Blanchard)提出的indexOf返回-1如果搜索没有找到字符串。由于在那种情况下我们需要整个字符串,因此我们必须针对这种情况进行测试并调整结束位置。

var pos = myString.indexOf('&');
if ( pos < 0 ) pos = myString.length;
var result = myString.substring(0, pos);

尽管键入的内容多一点,但在所有经过测试的浏览器中,性能都很棒。

那么我应该使用哪一个呢?

这取决于您正在执行的操作以及要处理的数据量。cr0ss确实在jsperf上设置了性能测试我添加了更多测试,后来又添加了更多数据的更多测试最新测试是在同一台计算机上使用Chrome 35,Firefox 29,Opera 21和Internet Explorer 11进行的。

表现测试中,我首先列出了100首歌曲,然后添加了不同的结尾字符串。这样一来,我得到的字符串就没有多余的东西了,而且字符串还带有一个或多个分隔符。

正则表达式(蓝色)

使用replace用正则表达式允许您处理复杂的案件。但这要付出代价,因为正则表达式可能很慢。但是使用测试的数据,它比在Chrome和Opera中拆分的速度快,并且在Firefox中的速度几乎相同。在Internet Explorer中,它是最慢的。

var result = input.replace(/&.*/, "");

拆分为数组(红色)

拆分为数组无限制拆分几乎相同。临时变量有所不同。使用测试的数据,它在Chrome和Opera中的速度比regex慢,在Firefox中的速度几乎相同,而在Internet Explorer中的速度中等。

var array = test.input.split('&');
var result = array[0];

极限分割(黄色)

split有一个可选的第二个参数,它限制了可以返回的字符串数。如果输入字符串具有多个分隔符,则可能会更快。

如果输入字符串中只有一个分隔符,则在Chrome,Firefox和Opera中,这要慢得多。但是,如果有多个分隔符,则在Chrome和Opera中会更快。在Internet Explorer中,它总是比没有限制更快。

var result = myString .split('&',1)[0];

无限分割(绿色)

拆分为数组几乎相同,但在Chrome和Opera中则稍快一些。

var reusult = myString.split('&')[0];

子串固定

这个版本是基于答案杰伊·布兰查德被使用substring,但如果没有找到该分离器这个版本返回整个字符串。在所有经过测试的浏览器中,这是最快的方法。在Firefox中,它的速度几乎是其他方法的两倍。

var idx = myString.indexOf('&');
var result = myString.substring(0, idx < 0 ? string.length: idx);

结论

结果取决于您使用的数据。基于这些测试,太多的缓存,分支预测和其他事情在表面之下发生,以至于无法提出很好的建议。从配置文件中可以看出,所用的浏览器很重要。如果要处理的数据很多,则可以使用所拥有的数据来分析哪种方法更快。

对于经过测试的数据,substring-method到目前为止是所有经过测试的浏览器中最快方法,并且它很简单,因此很有意义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在C中删除字符串的最后一部分

如何在JavaScript中获取字符串的最后一部分?

如何在JavaScript中的“:”之前删除字符串的一部分?

如何在python列表中删除字符串的一部分?

如何在PHP中删除字符串的一部分?

如何在javascript中替换字符串的一部分

如何删除字符串的最后一部分?

在Python中删除用点号分隔的字符串的最后一部分

如何在最后一次出现时删除数组中字符串的一部分

如何在shell脚本中获取'/'分隔字符串的最后一部分

如何从特定字符中删除字符串的一部分?

删除最后一个“”之后的字符串的最后一部分。在R中

如何从 Python 中的 Pandas DataFrame 中删除字符串的一部分

如何删除B中字符串的第一部分

如何使用通配符在mysql中删除/替换字符串的一部分?

如何使用Powershell从字符串中删除文本的一部分?

如何在javascript中提取字符串的一部分?

如何在recyclerview中隐藏字符串的一部分?

如何在PHP中替换字符串的一部分?

如何在Java中检索字符串的一部分?

如何在python数组中查找字符串的一部分

如何在laravel 5.2中仅显示字符串的一部分?

如何在PowerBI中匿名/屏蔽字符串的一部分?

如何在 Oracle 中获取 JSON 字符串的一部分

如何在C中打印字符串的一部分

如何在 PHP 中隐藏/替换字符串的一部分?

从数据文件的一列中删除点后的字符串的最后一部分

删除字符串的一部分

使用JavaScript正则表达式删除'&&&'之后的字符串的最后一部分