begin process at 2012 05 30 03:37:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

Respecter la ponctuation


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Respecter la ponctuation

jeudi 8 mai 2008 à 16:45:46 | Respecter la ponctuation

fabiano13

Bonjour,

J'ai créé une fonction qui formate un texte de la manière suivante :

La virgule : texte,[espace] texte
Le point-virgule : texte[espace];[espace]texte
Les deux-points : texte[espace]:[espace]texte
Le point : texte.[espace]texte
Les points de suspension : texte.[espace]texte
Le point d'interrogation : texte[espace]?[espace]texte
Le point d'exclamation : texte[espace]![espace]texte
Les guillemets : texte[espace]«[espace]texte[espace]»[espace]texte
Les parenthèses : texte[espace](texte)[espace]texte

Seulement c'est super long selon la chaine à traiter!! il me semble qu'avec des expressions régulières c'est beaucoup plus simple. Mais je n'y pige rien !

Voici le code :

<script>

function FormaterChaine(sChaine){
sPonctPrecedente = "?|;|!|:|(|[|«|»";
sPonctSuivante = "?|,|.|;|!|:|)|]|«|»";
sTabPonctSuivante = sPonctSuivante.split("|");
sTabPonctPrecedente = sPonctPrecedente.split("|");

TexteFormate1 = "";
y = 0;
for (var i=0; i<sTabPonctSuivante.length; i++) {
sPonctSuivante = sTabPonctSuivante[i];
if (y==0){
var sChaine = sChaine + "|";
LnsChaine = sChaine.length;
}else{
var sChaine = TexteFormate1 + "|";
LnsChaine = sChaine.length;
}
if (sChaine.indexOf(sPonctSuivante)!=-1){
for (var k=0; k<LnsChaine;k++){
if (sChaine.substr(k,1)==sPonctSuivante){
if(sChaine.substr(k,2)!= sPonctSuivante + " "){
TexteFormate1 = TexteFormate1 + sPonctSuivante + " ";
y=y+1
}else{
TexteFormate1 = TexteFormate1 + sPonctSuivante;
y=y+1
}}else{
TexteFormate1 = TexteFormate1 + sChaine.substr(k,1);
y=y+1
}}
}
}

sDernChaine = TexteFormate1.split("|");
LnDernChaine = sDernChaine.length;

for (var k=0; k<LnDernChaine;k++){
if (sDernChaine[k]!=""){
TexteFormate1 = sDernChaine[k];
}
}

TexteFormate1 = TexteFormate1.replace(". . .","...");
TexteFormate1 = TexteFormate1.replace(". .",".");

y=0;
TexteFormate2="";

for (var i=0; i<sTabPonctPrecedente.length; i++) {
sPonctPrecedente = sTabPonctPrecedente[i];

if (y==0){
var sChaine = TexteFormate1 + "|";
LnsChaine = sChaine.length;
}else{
var sChaine = TexteFormate2 + "|";
LnsChaine = sChaine.length;
}

if (sChaine.indexOf(sPonctPrecedente)!=-1){
for (var k=0; k<LnsChaine;k++){
if (sChaine.substr(k,1)==sPonctPrecedente){
if(sChaine.substr(k-1,2)!= " " + sPonctPrecedente){
TexteFormate2 = TexteFormate2 + " " + sPonctPrecedente;
y=y+1
}else{
TexteFormate2 = TexteFormate2 + sPonctPrecedente;
y=y+1
}}else{
TexteFormate2 = TexteFormate2 + sChaine.substr(k,1);
y=y+1
}}
}
}

sDernChaine = TexteFormate2.split("|");
LnDernChaine = sDernChaine.length;

for (var k=0; k<LnDernChaine;k++){
if (sDernChaine[k]!=""){
TexteFormate2 = sDernChaine[k];
}
}

return TexteFormate2
}
var sChaine = "Bonjour,je tente de;formater une chaine.Est-ce que c'est facile?N'est-ce pas!«Fabiano:13»[2008]A suivre...(mai 2008)";

document.write("<b>Avant :</b> <font color=green>" + sChaine + "</font><br>")
document.write("<b>Après :</b> <font color=blue>" + FormaterChaine(sChaine) + "</font>")
</script>

vendredi 9 mai 2008 à 16:49:45 | Re : Respecter la ponctuation

fabiano13

Réponse acceptée !


Merci pour l'aide de V1nce.

<html>
<body>
<div id="toto">Bonjour,je tente de;formater une chaine.Est-ce que c'est facile?N'est-ce pas!!«Fabiano:13»[2008]A suivre...(mai 2008)</div>
<script>
var val = document.getElementById("toto").innerHTML;

// on remplace un caractère à la fois
lepoint = new RegExp(/(\s*\.\s*)/g); // un certain nombre d'espaces (éventuellement nul) puis un point puis un certain nombre d'espaces (éventuellement nul)
val = val.replace(lepoint,". ");

lavirgule = new RegExp(/(\s*\,\s*)/g);
val = val.replace(lavirgule,", ");

// ou bien on utilise les expressions parenthésées
espace_caractere_espace = new RegExp(/(\s*(\;|\:|\"|\?|!|\(|\)|\[|\]|\«|\»)\s*)/g);
// \s* un certain nombre d'espaces (éventuellement nul) puis ( un ; ou : ou " ou ? ou ! ou ...) puis un certain nombre d'espaces (éventuellement nul)
val = val.replace(espace_caractere_espace," $1 "); // $1 = le caractère reconnu

val = val.replace(". . .","...");


document.getElementById("toto").innerHTML = val;
</script>

</body>
</html>



Cette discussion est classée dans : texte, espace, var, schaine, texteformate1


Répondre à ce message

Sujets en rapport avec ce message

Code sur Raymod Queneau ....... qui marche pas [ par Lorenfar ] Salut à toute la communauté.J'ai un problème avec mon premier scrip.Et oui je suis un noob.Avant de vous le montrer, je vais vous expliquez à quoi il texte visible et sélectionné dans textarea [ par bultez ] bonjour à tous.func formulaire dynamique [ par refkaben ] Bonjour et meilleurs voeux pour tout monde. Je veux faire un formulaire dont les champs s'ajoute en cliquant sur un bouton.J'ai créé une fonction en j Petit script pour des zones de texte dynamiques [ par clenio ] hélloJe suis en train de faire mes premiers pas (et premières armes) en php et javascript.Mon code récupère la valeur du SELECT et doit afficher en co boucle for [ par atchoumen ] Bonjour,Je suis actuellement en train de travailler sur l'api googleMap. J'ai un fichier xml dans lequel je rentre tous mes points et valeur. Pour l'i Demande aide Fichier Javascript [ par crunchattak59 ] bonjoursVoila je voudrais faire une belle signature dans outlookJ'ai vu que l'on pouvais faire pas ma l de chose avec javascript...Etant une bille en transformer un lien en texte [ par Jarod1980 ] Bonjour,J'aimerais savoir comment transformer un texte ou une image en lien sans utiliser la commande doRichEditCommand('CreateLink');En fait, ce que texte qui defile en boucle sans espace entre le debut et la fin [ par wally88 ] Bonjour, Voila j'aimerais que mon texte defile en boucle sans qu'il y ait d'espace entre. c'est a dire que les lettre arrivé a gauche par exemple ne Problème de textbox & menu deroulant associé [ par 4lman78 ] BonjourJ'ai deux champs texte dans l'exemple ci dessous, dans mon cas concret il pourra y en avoir une vingtaine.Or je n'arrive pas a ce que chaque ch colorer du texte [ par bayeland ] Salut j'ai telecharger le code ci dessous et il marche tres bien. Le seul probleme et que je ne veux pas qu'il remplace le texte recherche qui se trou


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales