0
votes

La méthode JavaScript Remplacer () remplace les mauvais caractères

Je suis une sorte de nouveau à la programmation et je regarde des mots de code pour pratiquer. Donc, il existe une tâche où vous devez prendre une chaîne donnée et ne pas tourner une lettre majuscule et faites cela pour chaque lettre et faites-en une arraie. Comme une vague mexicaine (c'est en fait le nom de la tâche).

comme ceci:

Si une chaîne est 'marko', une matrice doit ressembler à ['Marko', 'Marko ',' Marko ',' Marko ',' Marko ']] .

Tout va bien jusqu'à 2 ou plus des mêmes personnages. Par exemple, si une chaîne est 'AAA', le tableau est ['AAA', 'AAA', 'AAA'] . Il remplace toujours le premier caractère de ce type.

Voici mon code: xxx

appelez la fonction avec une chaîne avec des caractères uniques tels que "ABC def 'et ça marchera. Après cela, appelez-le avec des personnages répétés comme «ABC ABC» et le problème se produira.

J'aimerais savoir ce que je fais mal. Merci!


0 commentaires

5 Réponses :


0
votes

minuscule.replace (minuscule [i], minuscule.charat (i) .Touppercase ()) code> remplacera toujours le première occurrence du caractère A code> C'est pourquoi vous obtenez la même sortie. Vous devez simplement mettre en place un moyen de remplacer la bonne occurrence p>

p>

function wave(string){
  let result = [];
  let lowerCase = string.toLowerCase();
  for(let i = 0; i < string.length; i++){
    if(lowerCase[i] !== ' '){
     const arr = lowerCase.split(""); //create an array from the string
     arr[i] = lowerCase.charAt(i).toUpperCase(); //change the right occurency
     result.push(arr.join("")); //transform the array to a string
    } else {
      continue;
    }
  }
  return result;
}

console.log(wave("aAa"));


2 commentaires

Merci karim. Pourriez-vous expliquer pourquoi il remplace toujours la première instance d'un personnage au lieu de Charat (i) et s'il vous plaît dites-moi comment définir cela sur une réponse acceptée? Je suis super nouveau ici.


Bonjour, vérifiez la documentation, cela vous explique comment fonctionner la méthode et il doit y avoir un bouton pour définir la réponse acceptée :) développeur.mozilla.org/en-us/docs/web/javascript/reference/...



0
votes
function wave(string){
  let result = [];
  let lowerCase = string.toLowerCase();
  for(let i = 0; i < string.length; i++){
    let item = lowerCase.slice(0,i) + lowerCase.charAt(i).toUpperCase() + lowerCase.slice(i+1);
    result.push(item);
  }
  return result;
}
If you want to handle some space character or things like that, it would be very simple to deduplicate the final result.

0 commentaires

0
votes

Si le modèle (premier paramètre) du string.prototype.replace () est une chaîne, seule la première occurrence sera remplacée.

avec minuscule.chaplace (minuscule [i], minuscule.charat (i) .Touppercase ()) Vous pouvez simplement remplacer la première occurrence.

Vous pouvez trouver plus d'informations ici: https://developer.mozilla.org/ EN-US / DOCS / Web / JavaScript / Référence / Global_Objects / String / Remplacez


1 commentaires

Merci, c'est ce que je cherchais - une explication!



0
votes

Vous pouvez créer une fonction code> code> pour remplacer le caractère à un point spécifique de la chaîne.

function replaceAt(string, char, index) {
  return string.substr(0, index) + char + string.substr(index + 1);
}

function wave(string) {
  string = string.toLowerCase();

  return string.split('').map((char, index) => replaceAt(string, char.toUpperCase(), index));
}

const result = wave("MARKO"); // ["Marko", "mArko", "maRko", "marKo", "markO"]


0 commentaires

0
votes

essayer d'utiliser string.pototype.substring. pour scinder la sous-chaîne à l'index spécifié par itération et remplacer le caractère d'index actuel en majuscule.

p>

const str = 'aaa';
const wave = function *(str) {
	for (let i = 0; i < str.length; i++) {
		yield str.substring(0, i) 
                      + str.charAt(i).toUpperCase() 
                      + str.substring(i + 1);
	}
};

const res = [...wave(str)];
console.log(res);


0 commentaires