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

IT技术 javascript jquery
2021-01-24 01:00:36

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

像这样

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

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

我现在正在使用这个:

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

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

     console.log(url);
 }
6个回答
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);

样品在这里

@LastTribunal 我今天实际上改变了答案。拆分是更灵活和更清洁的解决方案。
2021-03-15 01:00:36
LoL - 拆分可以接受正则表达式,所以 +1 不使用拆分?LoL - Javascript 使用正则表达式,所以 +1 表示不使用 Javascript?更多的代码和复杂性如何使它成为一项简单的任务?正则表达式和拆分不是更简单有效吗?
2021-03-21 01:00:36
这个意大利面代码不应该是最好的答案。请参阅拆分方法答案
2021-04-02 01:00:36
LoL - 不知何故,那些不了解正则表达式以及 split 工作原理的人获得了投票权。了解 String 方法就足够了。最不了解事物的运作方式和最大的代码规则世界:P 所以我在拆分答案中添加了一步一步的解释(以改变世界)。
2021-04-03 01:00:36

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

url.split('?')[0]

jsFiddle 演示

一个优点是即使?字符串中没有这种方法也能工作- 它会返回整个字符串。

+1,最好的事情是它始终有效,即使没有“?”
2021-03-14 01:00:36
喜欢这个答案,它给你的东西如此简单但非常强大
2021-03-17 01:00:36
我实际上改变了这个答案,因为它更灵活,整体上只是一个更清洁的解决方案。
2021-03-18 01:00:36
split返回一个数组(在本例中它有两个元素01),并[0]获取返回数组的第一个元素。
2021-03-27 01:00:36
[0] 在这种情况下会做什么?
2021-04-04 01:00:36
var href = "/Controller/Action?id=11112&value=4444";
href = href.replace(/\?.*/,'');
href ; //# => /Controller/Action

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

这只会删除“?” 和其他一些 OP 没有要求
2021-03-21 01:00:36
最佳答案OP 要求删除所有内容,?并明确说明删除后?还说:我希望 href 为 /Controller/Action only
2021-03-25 01:00:36
这将删除?(包括)之后的所有内容
2021-04-01 01:00:36

它非常适合我:

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

派对可能很晚: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)