删除某个字符后的所有内容


280

有什么方法可以删除某个角色之后的所有内容,或者只是选择该角色之前的所有内容?我从href一直到“?”获取值,并且总是会有不同数量的字符。

像这样

/Controller/Action?id=11112&value=4444

我只希望href是/Controller/Action,所以我想删除“?”之后的所有内容。

我现在正在使用这个:

 $('.Delete').click(function (e) {
     e.preventDefault();

     var id = $(this).parents('tr:first').attr('id');                
     var url = $(this).attr('href');

     console.log(url);
 }

Answers:


467
var s = '/Controller/Action?id=11112&value=4444';
s = s.substring(0, s.indexOf('?'));
document.write(s);

在这里取样

我还应该提到,本机字符串函数比正则表达式快得多,后者仅应在必要时才使用(这不是这种情况之一)。

更新了代码以不添加“?”:

var s = '/Controller/Action';
var n = s.indexOf('?');
s = s.substring(0, n != -1 ? n : s.length);
document.write(s);

在这里取样


15
此意粉代码不应是最佳答案。参见拆分方法答案
LastTribunal

1
大声笑-那些不了解正则表达式以及拆分工作原理的人获得了投票权。了解String方法就足够了。对事情的工作方式了解最少,世界上最大的代码规则:P因此,我对拆分答案(以解决问题)进行了逐步解释。

1
大声笑-拆分可以接受正则表达式,所以+1是否不使用拆分?大声笑-Javascript使用正则表达式,所以+1表示不使用Javascript?更多的代码和复杂性如何使它成为一项简单的任务?正则表达式和拆分不仅更简单而且更有效吗?

292

您也可以使用该split()功能。这似乎是我想到的最简单的方法:)。

url.split('?')[0]

jsFiddle演示

一个优点是,即使?字符串中没有任何内容,此方法也可以使用-它会返回整个字符串。


1
在这种情况下[0]会做什么?
Dejan.S 2011年

13
split返回一个数组(在这种情况下,它有两个元素01),并[0]获取返回数组的第一个元素。
kapa

41
+1,最棒的是,即使没有“?”,它也总是有效
凯文

如果要分割'\',该怎么办?
anud33p

1
喜欢这个答案,它给您
带来的好处

19
var href = "/Controller/Action?id=11112&value=4444";
href = href.replace(/\?.*/,'');
href ; //# => /Controller/Action

如果找到“?”,它将起作用。如果没有


这只会删除“?” 其他一些OP则没有要求
Kevin

4
这将删除?(包括)之后的所有内容
mcont,2015年

2
最佳答案!OP之后要求删除所有内容,?并明确声明也要删除?,例如:我希望href仅是/ Controller / Action

3

如果您还想保留“?” 并删除该特定字符之后的所有内容,您可以执行以下操作:

var str = "/Controller/Action?id=11112&value=4444",
    stripped = str.substring(0, str.indexOf('?') + '?'.length);

// output: /Controller/Action?

如果字符串不包含这不起作用?
斯蒂芬Bijzitter

@StephanBijzitter是的,我知道。由于我的回答说:“如果你也想保留 ” -有明显必须在字符串中问号保持..
patad

奇怪,看来我的评论是针对@Imran的其他答复。不知道为什么我在您的答案上贴了它。
Stephan Bijzitter,2015年

1

派对可能很晚:p

您可以使用反向引用$'

$' - Inserts the portion of the string that follows the matched substring.

let str = "/Controller/Action?id=11112&value=4444"

let output = str.replace(/\?.+/g,"$'")

console.log(output)


1

它对我非常有用:

var x = '/Controller/Action?id=11112&value=4444';
var remove_after= x.indexOf('?');
var result =  x.substring(0, remove_after);
alert(x);

0

为我工作:

      var first = regexLabelOut.replace(/,.*/g, "");

-2

可以使用JavaScript轻松完成,请参阅链接 JS String

编辑它可以很容易地完成。;)

var url="/Controller/Action?id=11112&value=4444 ";
var parameter_Start_index=url.indexOf('?');
var action_URL = url.substring(0, parameter_Start_index);
alert('action_URL : '+action_URL);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.