Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RECHERCHER ET REMPLACER UN MOT DANS UN TEXTE


Information sur la source

Catégorie :Divers Classé sous : rechercher, remplacer, texte Niveau : Initié Date de création : 25/10/2007 Date de mise à jour : 18/02/2009 10:48:22 Vu / téléchargé: 5 825 / 238

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

Description

Un script de recherche des mots d'un texte: 2 versions, la première pour Internet Explorer sur la base d'une source trouvée sur ce site, simplifiée (débarassée de son formulaire) arrangée (alertes diverses) dotée d'une fonction de remplacement; la seconde pour Opera entièrement nouvelle.
Il est ici proposé prèt à l'emploi. 1 document en xhtml valide et 1 document js.

 

Source

  • function remplacer()
  • {
  • var j;
  • if (t1.value == "" || t2.value == "") alert('Choisissez un mot à chercher et/ou son remplaçant !');
  • else
  • {
  • aire.focus();
  • champ = aire.createTextRange();
  • for (j = 0; j <= a && (action = champ.findText(t1.value)) != false; j++)
  • {
  • champ.moveStart('character', 1);
  • champ.moveEnd('textedit');
  • }
  • if (action)
  • {
  • champ.moveStart('character', -1);
  • champ.findText(t1.value);
  • champ.select();
  • champ.scrollIntoView();
  • a++;
  • if (confirm('Voulez vous remplacer le mot ?'))
  • {
  • champ.text = t2.value;
  • document.execCommand('unselect');
  • a--;
  • b = 1;
  • }
  • }
  • else
  • {
  • if (a > 0) {alert('L\'opération est terminée !'); if(document.selection) {a = 0; b = 0; document.execCommand('unselect'); return false;}}
  • if (b > 0) {alert('L\'opération est terminée !'); if(document.selection) {a = 0; b = 0; document.execCommand('unselect');}}
  • else {alert('Le mot a remplacer n\'est pas dans le document !'); a = 0; b = 0;}
  • }
  • }
  • }
function remplacer()
{
 var j;
 if (t1.value == "" || t2.value == "") alert('Choisissez un mot à chercher et/ou son remplaçant !');
 else
 {
  aire.focus();
  champ = aire.createTextRange();
  for (j = 0; j <= a && (action = champ.findText(t1.value)) != false; j++) 
  {
   champ.moveStart('character', 1);
   champ.moveEnd('textedit');
  }
  if (action) 
  {
   champ.moveStart('character', -1);
   champ.findText(t1.value);
   champ.select();
   champ.scrollIntoView();
   a++;
   if (confirm('Voulez vous remplacer le mot ?'))
   {
    champ.text = t2.value;
    document.execCommand('unselect');
    a--;
    b = 1;
   }
  } 
  else
  {
   if (a > 0) {alert('L\'opération est terminée !'); if(document.selection) {a = 0; b = 0; document.execCommand('unselect'); return false;}}
   if (b > 0) {alert('L\'opération est terminée !'); if(document.selection) {a = 0; b = 0; document.execCommand('unselect');}}
   else {alert('Le mot a remplacer n\'est pas dans le document !'); a = 0; b = 0;}
  } 
 }
}

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

29 octobre 2007 11:17:49 :
Différences variables locales, variables globales. Attribut name et id.
29 octobre 2007 11:20:24 :
Différences variables locales, variables globales. Attributs name et id en doublons.
14 novembre 2007 19:24:11 :
Suite à la demende formulée par un fidèle du site, le script permet cette fois de tenir compte de la casse du texte recherché.
07 novembre 2008 09:46:22 :
Avec la source DHTML pour I.E. une source JS pur qui fonctionne avec Opéra 9.6
08 novembre 2008 09:52:23 :
Corrige un bug de recherche des expressions contenant une parenthèse ou un crochet.
18 février 2009 10:47:47 :
Modification du commentaire d'accompagnement de la source.
18 février 2009 10:48:22 :
Modification du commentaire d'accompagnement de la source.

Commentaires et avis

signaler à un administrateur
Commentaire de XtremDuke le 25/10/2007 16:36:38

Je rentre pas dans les détails mais tu as oublié de déclarer tes objets.

var air = document.getElementById('air'); // par exemple...

signaler à un administrateur
Commentaire de lgh le 26/10/2007 07:32:08

Bonjour,
Une précision afin de répondre à xtrem...
Le code proposé ci-dessus n'est qu'un extrait de la source.
Tout est dans le zip.
LGH

signaler à un administrateur
Commentaire de XtremDuke le 26/10/2007 13:28:25

Je ne parlais pas de l'extrait mais bel et bien de ta source.
Tu ne peux pas utiliser <body onload="aire.focus();"> si tu n'a pas définis "aire" au préalable. "air" est l'identifiant de ton objet, pas ton objet. Et c'est la même chose pour t1, t2 etc...

signaler à un administrateur
Commentaire de lgh le 27/10/2007 14:36:17

Bonjour xtrem...,
Si, je peux utiliser aire sans l'avoir déclaré au préalable, de même pour t1 et t2. Ils ne sont que des valeurs des attributs id et name des éléments textarea et input dans le document html.
(NB: Dans le doute j'ai feuilleté divers tutoriels y compris Introduction au javascript sur ce site et rien de ce que tu avances n'est précisé...).
LGH

signaler à un administrateur
Commentaire de snpier wolf le 29/10/2007 09:06:01

bonjours,
bon normalement je "fait" du c++, mais le javasript je trouve sa asser fort bravo pour ton code.
A++

signaler à un administrateur
Commentaire de roro06 le 29/10/2007 09:43:37 1/10

Bonjour

Il n'y a qu'IE qui accepte <body onload="aire.focus();"> sans avoir au préalable déclaré ton objet, comme le fait très justement remarquer XtremDuke. FFx renvoie comme messages d'erreur : "aire is not defined" et "t1 is not defined"

Petit bug : la fonction "remplacer" ne marche pas après utilisation de "chercher"

signaler à un administrateur
Commentaire de lgh le 29/10/2007 10:13:32

Bonjour,

Ce que je pense de Firefox ?
Je ne sais que dire.
LGH

signaler à un administrateur
Commentaire de roro06 le 29/10/2007 10:54:30

Bonjour

C'était pas le but de mon commentaire, je ne vais pas entrer dans des trolls stupides et stériles, mais le développement javascript necessite de s'assurer du fonctionnement sur un maximum de plateformes possibles.

signaler à un administrateur
Commentaire de lgh le 29/10/2007 11:44:19

Bonjour roro,

J'aimerais bien lire la référence sur laquelle tu t'appuis. Cela me serait bien utile.
Mais en attendant, et même si firefox est un peu sensible, je me permes d'insister... Nulle part je n'ai rencontré d'obligation de "déclaration d'objet" dans le cas de figure qui nous préoccupe ici.
A tout hazard, j'ai repris la source en doublant les attributs des balises d'input et de textarea (xhtml transitional) et j'ai fait la différence entre les variables du script mais je ne vois pas ce que je peux faire de plus.
LGH  

signaler à un administrateur
Commentaire de XtremDuke le 29/10/2007 17:14:36

As-tu testé ta source sous Safari ?

signaler à un administrateur
Commentaire de lgh le 30/10/2007 11:26:18

Bonjour,
Je viens de vérifier le fonctionnement de la source sur firefox.
1/ Celui-ci ne demande pas de déclaration mais un formulaire pour fonctionner (or le xhtml ne le rend plus obligatoire...).
2/ Celui-ci ne reconnait semble-il pas les méthodes DHTML employées telles "objet.createTextRange()".
Celles-ci serait sauf erreur ou omission donc, exclusives IE.
Safari?

LGH

PS: A qui dois-je cette note encourageante, curieuse application de la charte!

signaler à un administrateur
Commentaire de lgh le 31/10/2007 10:53:51

Bonjour,
Suite et fin pour cette source...
Essai avec opéra 9.22.
La boucle (for...) ne fonctionne pas.
L'absence de formulaire dans le document principal n'est par contre (et par rapport à firefox) pas génante.
Conclusion, méthodes de recherche par traitement d'un TextRange, IE strictement (?).

LGH

signaler à un administrateur
Commentaire de Fwdavy le 05/11/2007 16:08:46

Ca ne remplace même pas tus les mots mais juste le premier qui est trouvé...puis ca ne controle pas le mot minuscule / majuscule. Puis la compatibilité avec les autres navgateur est importante, on parle d'une technologie Web pas d'une appli en local -_-

signaler à un administrateur
Commentaire de Fwdavy le 05/11/2007 16:42:22

Il y'avais plus simple et mieux a faire :

<script>
function chercheRemplace( text, stringToFind, stringRemplacement, champDeSortie )
{
var text = text.toString() ;
var maReg = new RegExp( stringToFind, "gi") ;
var resultat = text.replace( maReg, stringRemplacement ) ;

if ( text.search( maReg ) == -1 )
alert ( "Désolé le mot " + stringToFind.toUpperCase(stringToFind) + " n\'pas été trouvé" ) ;
else
champDeSortie.value = resultat ;
}
</script>
<form>
<textarea name="aireDeTexte" cols="75" rows="7">Saisissez ici votre texte</textarea>
<br><br> Rechercher : <input type="text" name="motAChercher">
<br><br> Remplacer par: <input type="text" name="motDeRemplacement">
<br><br>
<input type="button" value="Rechercher et Remplacer" onClick="chercheRemplace( this.form.aireDeTexte.value, this.form.motAChercher.value, this.form.motDeRemplacement.value, this.form.aireDeTexte )">
</form>

signaler à un administrateur
Commentaire de malalam le 07/11/2007 00:42:03 administrateur CS

Hello,

@LGH => IE n'est pas très réputé pour son support inconditionnel des standards. Enfin si, des standards microsoft ;-)
Bref, attaquer, comme tu le fais, le DOM directement via la valeur de l'attribut name d'un élément html n'est pas du DOM. Le DOM est strict...et IE trop permissif. Il n'y a guère qu'IE qui acceptera ce code car la plupart des autres navigateurs récents suivent beaucoup mieux le Document Object Model.
Quant à createTextRange, c'est effectivement, encore une fois, une spécificité IE, et uniquement IE. Il y a d'autres moyens de faire, en respectant le DOM, ceci dit. Même si IE propose des spécificités bien pratiques, c'est vrai. Mais comme le soulignent tes petits camarades de commentaire, le web, c'est vaste, et il vaut mieux faire en sorte de s'adapter aux utilisateurs, plutôt que de les forcer à utiliser des outils qu'ils n'ont pas envie d'utiliser. Faut bien respecter les minorités :-)

signaler à un administrateur
Commentaire de jdmcreator le 01/03/2009 01:26:56

Bonjour,

J'ai testé avec Safari et ça ne fonctionne pas ;)

A+

JDMCreator

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

pour remplacer du texte ??? [ par CoChOnOu ] hello à tous,voilà, dans ma page j'ai un tableau, hors, je voudrais via un javascript remplacer le contenu d'une des cases.En clair, j'ai :&lt;tr&gt;& Rechercher dans un fichier texte [ par gg16819 ] BonjourJe souhaiterais faire un petit moteur de recherche en javascript. Pour cela, je dois pouvoir ouvrir des fichiers externes (html et texte) et pa remplacer un retour à la ligne dans une zone de texte [ par nours2001 ] Bonsoir,Je récupère le contenu d'une zone de texte multiligne et je voudrais l'afficher dans une nouvelle fenêtre. le problème, c'est qu'il faudrait q remplacer texte sélectionné [ par eax ] salut c encore moi je voudrais juste savoir si on peut prendre la partie sélectionnée d'un textarea, la modifier, et la remettre au même endroitje m'e Remplacer certain caracteres dans une AREA TEXTE [ par supergrey ] Bonjour, j'ai un formulaire sur une page avec un champ texte ou lutilisateur inscrit un message, je voudrais qu'avant d'envoyer son message a la page Probleme dans ma fonction Rechercher Remplacer [ par Jarod1980 ] Jarod_Delaware PB affichage avec document.getElementById(texte).innerhtml [ par telecofr ] Salut,  sur mon site, j'ai mis un aperçu direct lors de l'écriture des messages du livre d'or.  Mon code est le suivant: Code Javascript :function Rem Remplacer du texte par une image [ par rorkaii ] Salut à tous, j'ai recherché "un peu" sur le site sans trouvé mon bonheur, alors que je sait que ça existe.Voilà mon problème, en me baladant sur dive Remplacer un texte selon l'ordre dans lequel il a été trouvé [ par jdmcreator ] Bonjour ! J'ai un problème. Je voudrais remplacer du texte dans un textarea par un autre à l'aide d'une fonction. Jusque là, pas de problème, il en e Remplacement avec RegExp [ par XelectroX ] Bonjour,Je cherche depuis 1h comment remplacer une string par RegExp :J'ai une fonction degrade(texte, color1, color2) qui me revois du texte traité.E


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,889 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.