// ----- feel free to use this stuff --- play with it --- copy as You like ----- // ----- but leave this authors 2 lines untouched: pseliger@gmx.net [july 2003] ----- // // extended javascript-api-methods : // * jsApi-extension-name / file-name : "jsApi.String.searchAndReplace.dev.js" // * original download-location : "http://www.pseliger.de/jsExtendedApi/jsApi.String.searchAndReplace.dev.js" // // first public release: july 2002 - the pure js-code comes with 1.767 bytes; // String.prototype.extendedSearch = function(searchValue,behaviour) { var regExpMaskArray = new Array(".","+","*","?","^","$","|","(",")","[","]","{","}"); for (var i=0;i<regExpMaskArray.length;i++) { searchValue = searchValue.replace(new RegExp("\\"+regExpMaskArray[i],"g"),("\\"+regExpMaskArray[i])); } var stringValue = this; var searchArray = new Array(); var searchArrayLength = searchArray.length; var regExpression = ((behaviour == "strictly") ? (new RegExp(searchValue,"")) : (new RegExp(searchValue.replace(/\s+/g,"\\\s+"),"i"))); while (regExpression.test(stringValue)) { regExpression.exec(stringValue); searchArray[searchArrayLength] = new Object(); searchArray[searchArrayLength].index = RegExp.index; searchArray[searchArrayLength].match = RegExp.$1; searchArrayLength = searchArray.length; stringValue = stringValue.replace(new RegExp(regExpression),""); } return ((searchArray.lengt === 0) ? (-1) : (searchArray)); }; /* // [EN] // // - searches the string globaly for the given text ("searchValue"): // * running in default-mode (2nd parameter "behaviour" is not provided or features a value not equal to "strictly") // case sensitivity as well as accurate white space sequences will be ignored; this kind of searching behaviour // also could be described as "loosely"; // * if the second parameter is set to "strictly" both case sensitivity and matching white space sequences will be // recognised; // - returns an array of twosome values (or couple values): // * "Array[i].match" returns the term that matches with "searchValue"; // * "Array[i].index" keeps the position where the above match took place; // // [DE] // // - durchsucht den string global nach dem angegebenen text ("searchValue"): // * im default-modus (zweiter parameter "behaviour" ist nicht angegeben oder hat einen wert ungleich "strictly") // wird dabei weder auf gross- / klein -schreibung noch auf exakte white-space-sequenzen geachtet; die art dieses // suchverhaltens kann man auch als "loosely" ("locker/frei") bezeichnen; // * wird der zweite parameter auf "strictly" ("streng/genau") gesetzt, wird sowohl auf uebereinstimmungen in der // gross-/klein-schreibung als auch auf exakte white-space-sequenzen geachtet; // - liefert ein array von paar-werten zurueck: // * "Array[i].match" liefert den ausdruck zurueck, welcher mit "searchValue" uebereinstimmt; // * "Array[i].index" haelt die position der uebereinstimmung von "Array[i].match" mit "searchValue"; */ String.prototype.globalReplace = function(searchValue,replaceValue,behaviour) { var regExpMaskArray = new Array(".","+","*","?","^","$","|","(",")","[","]","{","}"); for (var i=0;i<regExpMaskArray.length;i++) { searchValue = searchValue.replace(new RegExp("\\"+regExpMaskArray[i],"g"),("\\"+regExpMaskArray[i])); } return this.replace(((behaviour == "strictly") ? (new RegExp(searchValue,"g")) : (new RegExp(searchValue.replace(/\s+/g,"\\\s+"),"gi"))),replaceValue); }; /* // [EN] // // - searches the string globaly for the given text ("searchValue"): // * running in default-mode (3rd parameter "behaviour" is not provided or features a value not equal to "strictly") // case sensitivity as well as accurate white space sequences will be ignored; this kind of searching behaviour // also could be described as "loosely"; // * if the third parameter is set to "strictly" both case sensitivity and matching white space sequences will be // recognised; // - replaces EVERY match of parameter "searchValue" with the given value of parameter "replaceValue"; // // [DE] // // - durchsucht den string global nach dem angegebenen text ("searchValue"): // * im default-modus (zweiter parameter "behaviour" ist nicht angegeben oder hat einen wert ungleich "strictly") // wird dabei weder auf gross-/klein-schreibung noch auf exakte white-space-sequenzen geachtet; die art dieses // suchverhaltens kann man auch als "loosely" ("locker/frei") bezeichnen; // * wird der zweite parameter auf "strictly" ("streng/genau") gesetzt, wird sowohl auf uebereinstimmungen in der // gross-/klein-schreibung als auch auf exakte white-space-sequenzen geachtet; // - ersetzt JEDES vorkommen von parameter "searchValue" mit dem wert von parameter "replaceValue"; */ String.prototype.singleReplace = function(searchValue,replaceValue,behaviour) { var regExpMaskArray = new Array(".","+","*","?","^","$","|","(",")","[","]","{","}"); for (var i=0;i<regExpMaskArray.length;i++) { searchValue = searchValue.replace(new RegExp("\\"+regExpMaskArray[i],"g"),("\\"+regExpMaskArray[i])); } return this.replace(((behaviour == "strictly") ? (new RegExp(searchValue,"")) : (new RegExp(searchValue.replace(/\s+/g,"\\\s+"),"i"))),replaceValue); }; /* // [EN] // // - behaves like method "String.globalReplace()" except for the replacing // that will be executed only onces and therefore takes effect only to // the first occurrence of "searchValue" within the string; // // [DE] // // - verhaelt sich wie die methode "String.globalReplace()", nur das genau // einmal beim ersten vorkommen "searchValue" mit "replaceValue" ersetzt // wird; */