L'éditeur JavaScript
Visiteur non-identifié | Identifiez-vous | Devenir membre
Code perdu ? | Combien de visiteurs sur votre site ?
Rechercher :
Page d'accueil
     Home Page

JavaScript
     Tous les scripts
     Proposer un script
     Recherche de script
     AJAX new!
     Cours de JavaScript
     Liste de discussion
     Forums

Services :
     CountUs
     myCircle

     Referencement
     Créat. de bannière

Trucs et astuces :
     HTML / CSS
     PHP / MySQL
     Réferencement
     Graph / Présentation
     Toutes les astuces
     Ajouter un article

MailingList :
100213 abonnés

Annuaire webmaster :      Hebergement web
     Referencement
     Sites webmasters
     XHTML - CSS2
     PHP
     Affiliation - Pub
     FAI

     Annuaire webmaster

Ressources pour webmasters :
     Kits graphiques

Plus :
     Comparateur de prix
     Foire aux questions
     Les membres
     Devenir annonceur
     Faire un lien
     Contact

Partenaire :
     Hebergement gratuit
     Le PHP facile
     Horoscope
     Comscripts
     WebmasterClub
     Activeartanima...
     Le village de ...
     L'écriteau
     Faro-dessing
     Images gifs an...
     Netsources
     Easy-script.com
     Création de site
     Créer son site...
     K i s s design
     Les autres
     Votre site ici ?


Le forum ] [ Préférences ] [ Nouveau sujet ] [ Répondre ] [ Recherche ] [ Vos sujets ] [ Tous lus ] [ Flux RSS ]


[ Forums >> JavaScript >> Problèmes de création JavaScript / DHTML >> Respecter la ponctuation ]

> Respecter la ponctuation
[ Posté par fabiano13 ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 08-05-2008 à 16:46 | 8 messages ]

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 200";

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





[ Posté par v1nce ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 09-05-2008 à 15:04 | 3782 messages ]

<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 200</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 = lecaractère reconnu

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

</body>
</html>


________________
V1nce
Si je les ai oubliés les bonjour, merci et au revoir sont implicites

Brevets logiciels : dites NON !
http://petition.eurolinux.org/index.html
http://swpat.ffii.org/index.fr.html

[ Posté par fabiano13 ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 09-05-2008 à 16:44 | 8 messages ]

Merci beaucoup !




Services email :

Vous devez vous identifier pour profiter des services par email du forum.
Le forum ] [ Préférences ] [ Nouveau sujet ] [ Répondre ] [ Recherche ] [ Vos sujets ] [ Tous lus ] [ Flux RSS ]






1 visiteur
actuellement en ligne

    PUBLICITE



     ANNUAIRE WEBMAST.
Infomaniak
Un hebergeur Suisse de qualité à partir de 7.50 € / mois.
http://www.infomaniak.fr/
Cat : Hebergement web
Voir l'annuaire webmaster


     LES SCRIPTS :
78 à éditer
68 à copier/coller
247 des membres
2580 sur le web
>> Tous les scripts

     LES MEMBRES :
54273 membres
9604 comptes CountUs
1404 comptes myCircle

     LES FORUMS :
14 forums
39051 topics
188228 messages
>> Les forums

    SONDAGE

Utilisez-vous une page d'accueil personnalisable ?
Oui, la page d'accueil de Google (pas le moteur)
Oui, netvibes
Oui, mon Yahoo
Oui, my MSN
Oui, un autre
Non, je n'utilise pas de service de page d'accueil personnalisée
La mini-astuce "Graphisme / Présentation" du jour par sadike
N'hésitez pas à utiliser le XHTML plutôt que le HTML. Ce language permet d'alléger vos pages.

N'oubliez surtout pas de vérifier votre code au W3C: http://validator.w3.org/
Proposer votre mini-astuce | Archives des mini-astuces
© 1999-2008 K-NETWORK - Tous droits réservés | CNIL N° 844440 | 05/07/2008 06:44:49 | Design by Studcrea | Gen. en 0.445 sec.