Удалите все после определенного символа

Есть ли способ удалить все после определенного символа или просто выбрать все до этого персонажа? Я получаю значение от 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);
 }

Ответ 1

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);

Пример здесь

Ответ 2

Вы также можете использовать функцию split(). Кажется, это самый легкий, который приходит мне на ум:).

url.split('?')[0]

jsFiddle Demo

Одно из преимуществ этого метода будет работать, даже если в строке нет ? - он вернет всю строку.

Ответ 3

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

Это будет работать, если он найдет '?' и если он не

Ответ 4

Если вы также хотите сохранить "?" и просто удалите все после этого конкретного символа, вы можете сделать:

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

// output: /Controller/Action?

Ответ 5

var fromLeft = 8;
var s = '/Verify/Action?id=11112&value=4444';
s = s.substring(fromLeft , s.indexOf('/'));
alert(s);

Выход будет /Verify/

Ответ 6

Работал для меня:

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

Ответ 7

Может быть очень поздно вечеринка: р

Вы можете использовать обратную ссылку $ '

$' - 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)

Ответ 8

Это работает для меня очень хорошо:

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

Ответ 9

Это можно легко сделать, используя 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);