2
votes

besoin de supprimer les caractères spéciaux au milieu de la phrase mais pas le début et la fin de la chaîne

J'ai une chaîne

var str = "& & & This is&test release * this is rest release & &";
var str2="";
var str1=str.split(' ');
for(var i=0;i<str1.length;i++) {
 if(/^[0-9a-zA-Z]/.test(str1[i])) { 
   str1[i]=str1[i].replace(/[^a-zA-Z ]/g, "") 
 }
 str2=str1.join(' ');
}
console.log(str2); 

Input:

"& & This istest release & this is rest release &";

La sortie doit être

"& & This istest release  this is rest release &";

Mais je reçois le résultat

string ="& & This is&test release & this is rest release &";

Mon code:

string= "& & This is&test release & this is rest release &";
Output ="& & This istest release  this is rest release &"


6 commentaires

Quel est votre code? Quelles sont les exigences réelles?


Salut a essayé comme ça



Essayez str.replace (/ (^ [^ \ w \ s] + | [^ \ w \ s] + $) | [^ \ w \ s] / g, "$ 1")


Vous venez d'ajouter votre code à la question et vous obtenez en fait & & & Cette dernière version * ceci est une version de repos & & . Cela semble attendu.


@ user2644839 Vous pouvez accepter une réponse (si cela vous aide) en cliquant sur le gros bouton à cocher gris sur son côté gauche. Si vous le souhaitez, vous pouvez ajouter +10 points à n'importe quel auteur de toute bonne réponse en cliquant sur le triangle gris supérieur


4 Réponses :


0
votes

Je ne suis pas sûr des espaces blancs dans la chaîne ici (en avez-vous réellement besoin, mais voici une alternative que vous pouvez essayer)

let string = "& & This is&test release & this is rest release &";

let a = string.split("&").map(el => {
  if (el == "" || el == " ") {
    el = " &"
    }
  return el
})
let result = a.join(""); // join acc to gap you want
console.log(result)


0 commentaires

0
votes

Essayez

let s= "& & This is&test release & this is rest release &";

let o= s.replace(/^([& ]*)(.*?)([& ]*)$/, (m,a,b,c)=> a+b.replace(/&/g,'')+c);

console.log(o);


0 commentaires

0
votes

Voici quelque chose que j'ai proposé et qui fonctionnera avec tous les caractères spéciaux.

& & This is test  release  this is rest release &

Sortie:

var str = "& & This is&test _&&release & this_is rest release &";
var replacedString = str.replace(/(\w\s*)([^a-zA-Z0-9]+)(\s*\w)/g, "$1 $3"); 
console.log(replacedString);

Le modèle de remplacement correspondra à n'importe quel nombre de caractères spéciaux entre n'importe quel caractère alphanumérique.


0 commentaires

0
votes

Et ça? cela fonctionne parfaitement. J'ai divisé la chaîne pour commencer, au milieu et à la fin. puis remplacé les caractères spéciaux uniquement au milieu, puis joint les 3 parties en arrière.

string= "& & This is&test release & this is rest release &";

i=string.search(/[\w\s]/i)//first letter
j=string.search(/[\w\s][^\w\s]*$/i)//last letter

start=string.substr(0,i)
middle= string.substr(i,j-i+1)
end=string.substr(j+1)

middle=middle.replace(/[^\w\s]/gi,"")//replace only in the middle

output=start+middle+end

console.log(output)

J'espérais que je vous ai aidé.


0 commentaires