Remova tudo depois de um certo caractere


280

Existe uma maneira de remover tudo depois de um determinado personagem ou simplesmente escolher tudo até esse personagem? Estou recebendo o valor de um href e até o "?", E sempre haverá uma quantidade diferente de caracteres.

Como isso

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

Eu quero que o href seja /Controller/Actionapenas, então eu quero remover tudo depois do "?".

Estou usando isso agora:

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

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

     console.log(url);
 }

Respostas:


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

Amostra aqui

Também devo mencionar que as funções nativas de strings são muito mais rápidas que as expressões regulares, que devem ser usadas apenas quando necessário (esse não é um desses casos).

Código atualizado para não incluir '?':

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

Amostra aqui


15
esse código de espaguete não deve ser a melhor resposta. veja a resposta do método de divisão
LastTribunal 07/07

1
LoL - De alguma forma, aqueles que não entendem a regex e como a divisão funciona obtém o poder de voto. Compreender os métodos String é suficiente. O mínimo de entendimento de como as coisas funcionam e o maior código governam o mundo: P Então, adicionei uma explicação passo a passo à resposta dividida (para mudar o mundo).

1
LoL - A divisão pode aceitar regex tão +1 por não usar a divisão? LoL - Javascript usa regex tão +1 por não usar Javascript? Como mais código e complexidade podem torná-lo uma tarefa simples? Regex e split não são mais simples e eficazes?

293

Você também pode usar a split()função Este parece ser o mais fácil que me vem à cabeça :).

url.split('?')[0]

jsFiddle Demo

Uma vantagem é que esse método funcionará mesmo se não houver ?uma string - ele retornará a string inteira.


1
o que o [0] faz nessa situação?
precisa saber é o seguinte

13
splitretorna uma matriz (neste caso, possui dois elementos 0e 1) e [0]obtém o primeiro elemento da matriz retornada.
KapaAbr

41
+1, o melhor é que sempre funciona, mesmo que não haja '?'
Kevin

o que devemos fazer se queremos dividir '\'?
Anud33p

1
Amo esta resposta, tão simples e ainda muito poderosa no que lhe dá
Richlewis

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

Isso funcionará se encontrar um '?' e se isso não acontecer


isso apenas removerá o '?' e alguns outros para OP não pediu
Kevin

4
Isso removerá tudo após o ?(incluído)
mcont 8/15

2
MELHOR RESPOSTA ! OP pediu TUDO retirar após ?e claramente para remover ?também por dizer: eu quero a href ser / controle / ação única

3

Se você também deseja manter "?" e basta remover tudo depois desse caractere específico, você pode fazer:

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

// output: /Controller/Action?

Isso não funciona se a string não contém um?
Stephan Bijzitter

@StephanBijzitter Sim, eu sei. Como a minha resposta diz: "se você também deseja manter o ? " - obviamente tem que haver um ponto de interrogação na string para manter ..
patad

Estranho, parece que meu comentário foi feito para a outra resposta de @Imran. Não sei por que eu postei na sua resposta.
Stephan Bijzitter

1

Pode ser festa muito atrasada: p

Você pode usar uma referência anterior $ '

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

Funciona muito bem para mim:

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

0

Trabalhou para mim:

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

-2

Isso pode ser feito facilmente usando JavaScript para referência, consulte o link JS String

EDIT pode ser feito facilmente como. ;)

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);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.