Comment puis-je ignorer l'affaire dans l'exemple ci-dessous? Exemple: P> entrée: strong> p> outText = "Retail~banking Wikipedia, the free encyclopedia Retail~banking " +
"From Wikipedia. retail~banking industry."
4 Réponses :
Vous n'avez pas spécifié de langue. P>
Java a motif.case_insensible p>
C # et VB ont regexoption.ignorecase p>
Vous pouvez convertir tout en minuscule avant de faire la recherche ou regarder un modèle de modificateur de regex.casensitive P>
Pour effectuer une recherche insensible à casse et remplacer, vous pouvez modifier
Sony~Ericsson is a leading company in mobile. The company sony~ericsson was found in oct 2001
Notez que sans le unicode_case code> ou (? u) code> indicateur que vous n'obtiendrez pas le cas de cas unicode approprié. Cela ne compte pas sur des données purement ASCII, mais si vous avez des lettres de boîtier non ASCII, notamment des latins comme des chiffres romains, tels que King Henry ⅷ Code> et King Henry ⅷ Code >, qui sont des variantes de cas les uns des autres. Un exemple facile non latin est que στιγμας code>, στιγμας code> et στιγμασ code> doit tous correspondre à l'autre des cas insensitativement parce qu'un sigma grec a trois formes différentes . (Et oui, je connais le pluriel de στιγμα code> est vraiment στιγματα code>. :)
@tchrist proposez-vous de remplacer "(? i) [..]" avec "(? UI) [..]"? C'est ce qui a fonctionné pour moi.
@ k3b ouais c'est ce que je voulais dire.
@Tchrist Vous venez de sauver mon temps, merci! C'est bizarre que, par défaut, Unicode Casefolding ne fonctionne pas hors de la boîte
Voici ma façon de le faire:
private String replaceAllIgnoreCase(final String text, final String search, final String replacement){
if(search.equals(replacement)) return text;
final StringBuffer buffer = new StringBuffer(text);
final String lowerSearch = search.toLowerCase(Locale.CANADA);
int i = 0;
int prev = 0;
while((i = buffer.toString().toLowerCase(Locale.CANADA).indexOf(lowerSearch, prev)) > -1){
buffer.replace(i, i+search.length(), replacement);
prev = i+replacement.length();
}
return buffer.toString();
}
Je ne comprends pas pourquoi l'affaire est un problème lors du remplacement des espaces.
Oh, parce que l'espace doit être entre certains matchs insensibles. S'il n'y a pas d'option icase dans votre langue, les réfs pourraient faire cela.