Pequena pergunta muito simples, mas não entendo bem como fazê-lo.
Preciso substituir todas as instâncias de '_' por um espaço e todas as instâncias de '#' por nada / vazio.
var string = '#Please send_an_information_pack_to_the_following_address:';
Eu tentei isso:
string.replace('#','').replace('_', ' ');
Eu realmente não gosto de encadear comandos como este. Existe outra maneira de fazer isso em um?
javascript
jquery
Shannon Hochkins
fonte
fonte
Respostas:
Use o operador OR (
|
):Você também pode usar uma classe de personagem:
Violino
Se você deseja substituir o hash por uma coisa e o sublinhado por outra, será necessário encadear. No entanto, você pode adicionar um protótipo:
Por que não cadeia, no entanto? Não vejo nada de errado nisso.
fonte
#|_
é[#_]
, e assim como você pode usar+
para coincidir com quaisquer jogos consecutivos para melhorar o desempenhostr.replace(/[+ -]/g,'');
apenas coloque espaço em branco no meio.Encadeamento é legal, por que descartá-lo?
Enfim, aqui está outra opção em uma substituição:
A substituição escolherá "" se corresponder == "#", "" se não.
[Atualização] Para uma solução mais genérica, você pode armazenar suas seqüências de substituição em um objeto:
fonte
var regex = new RegExp( Object.keys(replaceChars).join("|"), "g");
string.replace(regex,function(match) {return replaceChars[match];})
isso facilita a modificação dos replaceChars.Se você deseja substituir vários caracteres, pode chamar o
String.prototype.replace()
argumento de substituição, sendo uma função que é chamada para cada correspondência. Tudo o que você precisa é de um objeto que represente o mapeamento de caracteres que você usará nessa função.Por exemplo, se você quiser
a
substituir porx
,b
pory
ec
comz
, poderá fazer algo assim:Saída :
234xyz567yyyyxz
fonte
var
porconst
aqui. uma alternativa para suporte estendido ao navegador:var s ='234abc567bbbbac'; s = s.replace(/[abc]/g, function(m) { return {'a':'x','b':'y','c':'z'}[m]; }); console.log(s);
var chars = {a:'1', b:'2', c:'3'}; var s = '123abc123'; var u = s.replace(/[abc]/g, function(m) { return chars[m]; }); WScript.echo(u);
Especifique o
/g
sinalizador (global) na expressão regular para substituir todas as correspondências em vez da primeira:Para substituir um caractere por uma coisa e um caractere diferente por outra, você não pode realmente precisar de duas chamadas separadas
replace
. Você pode abstraí-lo para uma função como a Maçaneta da porta, embora eu provavelmente desejaria que ele pegasse um objeto antigo / novo como pares chave / valor em vez de uma matriz plana.fonte
Você também pode tentar o seguinte:
find
refere-se ao texto a ser encontrado ereplace
ao texto a ser substituído porIsso substituirá caracteres que não diferenciam maiúsculas de minúsculas. Para fazer o contrário, altere os sinalizadores Regex conforme necessário. Por exemplo: para caso sensível, substitua:
fonte
Você pode apenas tentar o seguinte:
isso substituirá., - e # pelo seu substitechar!
fonte
Aqui está uma maneira simples de fazer isso sem o RegEx.
Você pode criar protótipos e / ou armazenar em cache as coisas conforme desejado.
fonte
str.replace(/#|_/g,'')
sed
y command ou à Unixtr
), esta parece ser a resposta certa.Tente por favor:
substituir várias cordas
var str = "http://www.abc.xyz.com"; str = str.replace(/http:|www|.com/g, ''); //str is "//.abc.xyz"
substituir vários caracteres
var str = "a.b.c.d,e,f,g,h"; str = str.replace(/[.,]/g, ''); //str is "abcdefgh";
Boa sorte!
fonte
Você também pode passar um objeto RegExp para o método de substituição, como
Javascript RegExp
fonte
replace
chamadas - isso não ajuda a evitar isso.yourstring = '#Envie send_an_information_pack_to_the_following_address:';
substitua '#' por '' e substitua '_' por um espaço
newstring2 é o seu resultado
fonte
var str = '#this #is__ __#a test###__';
que há claramente vários espaços nessa string.Aqui está outra versão usando o String Prototype. Aproveitar!
fonte
Não sei se isso ajudará, mas eu queria remover
<b>
e</b>
da minha stringentão eu usei
Então, basicamente, se você deseja que um número limitado de caracteres seja reduzido e não perca tempo, isso será útil.
fonte
Aqui está uma função "HTML seguro" usando uma função de substituição múltipla 'reduzir' (essa função aplica cada substituição a toda a cadeia de caracteres, portanto, as dependências entre substituições são significativas).
fonte