A sintaxe do método de substituição é: stringObj.replace(rgExp, replaceText) onde stringObj é uma string (string), reExp pode ser um objeto de expressão regular (RegExp) ou uma string (string) e replaceText é um substituto para o encontrado corda. . . Para ajudar todos a entender melhor, vamos dar um exemplo simples abaixo.
Código Js
Copie o código do código da seguinte forma:
<linguagem script="javascript">
var stringObj="República Popular de Zhonggu, Povo de Zhonggu";
//Substitua o erro de digitação "Zhonggu" por "China"
//E retorna o novo caractere substituído
//O valor da string original stringObj não foi alterado
var newstr=stringObj.replace("Zhonggu","China");
alerta(newstr);
</script>
"Zhonggu" é "China"
O valor de
China");
Se você for mais esperto do que eu, depois de ler o exemplo acima, descobrirá que o segundo erro de digitação "Zhonggu" não foi substituído por "China". Podemos executar o método de substituição secundário para substituir o segundo erro de digitação "Zhonggu". foi melhorado da seguinte forma:
Código Js
Copie o código do código da seguinte forma:
<linguagem script="javascript">
var stringObj="República Popular de Zhonggu, Povo de Zhonggu";
//Substitua o erro de digitação "Zhonggu" por "China"
//E retorna o novo caractere substituído
//O valor da string original stringObj não foi alterado
var newstr=stringObj.replace("Zhonggu","China");
newstr=newstr.replace("Zhonggu","China");
alerta(newstr);
</script>
"Zhonggu" é "China"
O valor de
China");
China");
Podemos pensar sobre isso com cuidado. Se houver N elevado à enésima potência de erros de digitação, deveríamos também executar o método de substituição de N elevado à enésima potência para substituir os erros de digitação? ? Ah, não tenha medo. Com a expressão regular, você não precisa executar o método replace uma vez por erro de digitação. . O código após a melhoria do programa é o seguinte
Código Js
Copie o código do código da seguinte forma:
<linguagem script="javascript">
var reg=new RegExp("久古","g"); //Cria um objeto RegExp regular
var stringObj="República Popular de Zhonggu, Povo de Zhonggu";
var newstr=stringObj.replace(reg,"China");
alerta(newstr);
</script>
Crie um objeto RegExp regular
A descrição acima é a aplicação mais simples do método de substituição. Gostaria de saber se você entendeu. ? Vamos começar com uma aplicação um pouco mais complexa. .
Ao pesquisar artigos em alguns sites, você encontrará esse fenômeno, ou seja, as palavras-chave da pesquisa ficarão destacadas e alteradas de cor? ? Como isso é alcançado? ? Na verdade, podemos usar expressões regulares para conseguir isso. Por favor, veja o código abaixo para o princípio simples
Código Js
Copie o código do código da seguinte forma:
<linguagem script="javascript">
var str="República Popular da China, República Popular da China";
var newstr=str.replace(/(人)/g,"<font color=red>$1</font>");
documento.write(newstr);
</script>
O programa acima carece de interatividade. Vamos melhorá-lo para que você possa inserir de forma independente os caracteres que deseja encontrar.
Código Js
Copie o código do código da seguinte forma:
<linguagem script="javascript">
var s=prompt("Digite os caracteres que você procura", "pessoa");
var reg=new RegExp("("+s+")","g");
var str="República Popular da China, República Popular da China";
var newstr=str.replace(reg,"<font color=red>$1</font>");
documento.write(newstr);
</script>
pessoas");
Talvez todos não entendam muito bem o que significa o caractere especial $1. Na verdade, $1 representa os caracteres entre colchetes na expressão à esquerda, ou seja, a primeira subcorrespondência. Da mesma forma, $2 representa a segunda subcorrespondência. . O que é uma subcorrespondência? ? Em termos leigos, cada colchete à esquerda é a primeira correspondência de palavra e o segundo colchete é a segunda subcorrespondência. .
Quando queremos realizar operações nos caracteres encontrados, como implementá-lo? ? Antes de implementá-lo, vamos primeiro falar sobre como obter os parâmetros de uma determinada função. . Dentro da função, existe uma coleção de argumentos. Esta coleção armazena todos os parâmetros da função atual. Todos os parâmetros da função podem ser obtidos por meio de argumentos.
Código Js
Copie o código do código da seguinte forma:
<linguagem script="javascript">
teste de função(){
alert("Número de parâmetros:"+arguments.length);
alert("O valor de cada parâmetro: "+argumentos[0]);
alert("O valor do segundo parâmetro"+argumentos[1]);
//Você pode usar um loop for para ler todos os parâmetros
}
teste("aa","bb","cc");
</script>
alerta("
alerta("
alerta("
//Loop para ler todos os parâmetros
Depois de compreender o programa acima, vamos dar uma olhada no seguinte programa interessante
Código Js
Copie o código do código da seguinte forma:
<linguagem script="javascript">
var reg=new RegExp("//d","g");
varstr="abd1afa4sdf";
str.replace(reg,function(){alert(arguments.length);});
</script>
Ficamos surpresos ao descobrir que a função anônima foi executada duas vezes e havia três parâmetros na função. Por que foi executada duas vezes? ? É fácil pensar nisso, porque a expressão regular que escrevemos corresponde a um único número, e a string detectada tem dois números, então a função anônima é executada duas vezes. . Quais são os três parâmetros dentro da função anônima? ? Para esclarecer esse problema, vejamos o código a seguir.
Código Js
Copie o código do código da seguinte forma:
<linguagem script="javascript">
teste de função(){
for(var i=0;i<argumentos.comprimento;i++){
alert("O valor do parâmetro "+(i+1)+": "+arguments[i]);
}
}
var reg=new RegExp("//d","g");
varstr="abd1afa4sdf";
str.replace(reg,teste);
</script>
for(var i=0;i<argumentos.comprimento;i++){
alert("Valores dos parâmetros: "+argumentos[i]);
}
Após observação, descobrimos que o primeiro parâmetro representa o caractere correspondente, o segundo parâmetro representa a posição mínima do índice do caractere durante a correspondência (RegExp.index) e o terceiro parâmetro representa a string correspondente (RegExp.input). Na verdade, o número desses parâmetros aumentará à medida que o número de subcorrespondências aumentar. Depois de esclarecer essas questões, podemos usar outra forma de escrever
Código Js
Copie o código do código da seguinte forma:
<linguagem script="javascript">
teste de função($1){
retornar "<font color='red'>"+$1+"</font>"
}
var s=prompt("Digite os caracteres que você procura", "pessoa");
var reg=new RegExp("("+s+")","g");
var str="República Popular da China, República Popular da China";
var newstr=str.replace(reg,teste);
documento.write(newstr);
</script>
retornar "<font color='red'>"+$1+"</font>"
pessoas");
Depois de ler o programa acima, você pode fazer o que quiser com os caracteres correspondentes. Aqui está um exemplo de aplicação simples:
Código Js
Copie o código do código da seguinte forma:
<linguagem script="javascript">
var str="Ele tem 22 anos, ela tem 20 anos, o pai dele tem 45 anos e o pai dela tem 44 anos, são 4 pessoas no total"
teste de função($1){
var gyear=(new Date()).getYear()-parseInt($1)+1;
return $1+"("+gyear+"ano de nascimento)";
}
var reg=new RegExp("(//d+)anos","g");
var newstr=str.replace(reg,teste);
alerta(str);
alerta(newstr);
</script>