Por que a função de substituição do Javascript substitui apenas a primeira instância
Ao usar replace() em JavaScript, você pode encontrar uma situação em que ela substitui apenas a primeira instância de uma string de destino. Essa aparente inconsistência decorre do comportamento padrão da função.
Compreendendo o comportamento de replace()
Por padrão, replace() encontra e substitui a primeira ocorrência de uma substring especificada dentro de uma string. Se você deseja substituir todas as instâncias, você precisa especificar o sinalizador g (global) na expressão regular.
Exemplo: definindo o sinalizador g
Considere o exemplo fornecido na pergunta:
var date = $('#Date').val(); // Gets value "12/31/2009" var id = 'c_' date.replace("/", ''); // Replaces only the first "/", resulting in "c_1231/2009"
Para substituir todas as instâncias da barra (/), use o sinalizador g:
var id = 'c_' date.replace(new RegExp("/", "g"), ''); // Replaces all "/" with "", resulting in "c_12312009"
Como alternativa, você pode usar uma sintaxe mais simples:
var id = 'c_' date.replace(/\//g, ''); // Equivalent to the previous line
Ao definir o sinalizador g, a expressão regular corresponde a todas as ocorrências da string de destino e as substitui pelo novo valor especificado. Esse comportamento garante que todas as instâncias sejam substituídas conforme pretendido.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3