/**
*
* Utilitaire de gestion des chaines de caractères.
*
* @version $Date: 2005/07/20 10:59:20 $, $Revision: 1.2 $, branche-$Name: $
* @author $Author: mlo $
*/
public class StringUtils {
/**
* remplacement d'une chaine 'oldstr' par une autre 'newstr'
* @param str chaine source
* @param oldstr chaine à remplacer
* @param newstr chaine de remplacement
* @return chaine résultat
*/
public static String replace (String source, String os, String ns) {
if (source == null) {
return null;
}
int i = 0;
// Make sure that oldString appears at least once before doing any processing.
if ((i = source.indexOf(os, i)) >= 0) {
// Use char []'s, as they are more efficient to deal with.
char[] sourceArray = source.toCharArray();
char[] nsArray = ns.toCharArray();
int oLength = os.length();
StringBuilder buf = new StringBuilder (sourceArray.length);
buf.append (sourceArray, 0, i).append(nsArray);
i += oLength;
int j = i;
// Replace all remaining instances of oldString with newString.
while ((i = source.indexOf(os, i)) > 0) {
buf.append (sourceArray, j, i - j).append(nsArray);
i += oLength;
j = i;
}
buf.append (sourceArray, j, sourceArray.length - j);
source = buf.toString();
buf.setLength (0);
}
return source;
}
/**
* remplacement d'une chaine entre deux position 'start' et 'end' par value
* @param str chaine source
* @param start position de départ
* @param end position finale
* @param value chaine de remplacement
* @return chaine résultat
*/
public static String replace(String str, String start, String end,
String value) {
int istart = str.indexOf(start);
int iend = str.indexOf(end);
if (istart != -1 && iend != -1)
return (new StringBuffer(str.substring(0, istart)).append(value)
.append(str.substring(iend + end.length())).toString());
else
return str;
}
}