2010-12-14 4 views
1

L'exigence est de diviser les chaînes en Java afin que les éléments suivantschaîne Fractionnement avec une séquence de caractères comme séparateur

"ce # {s} est # {s} a # {s} chaîne"

entraînerait dans le tableau suivant

[ "ce", "est", "a", "string"]

Comme vous pouvez le voir ici le délimiteur est la séquence caractère "# {s}".

Quelle est la manière la plus rapide et la plus efficace de le faire en utilisant les outils existants? Ai-je raison de supposer que l'utilisation de regex (String.split()) est un peu de gaspillage parce que nous sommes en train de diviser en utilisant la chaîne statique?

J'ai obtenu l'hypothèse d'ici http://www.javamex.com/tutorials/regular_expressions/splitting_tokenisation_performance.shtml. Mais je ne peux pas utiliser StringTokenizer puisque le délimiteur est une séquence de char.

Note: actuellement j'utilise String.split() et je n'ai aucun problème avec ça. C'est une pure curiosité.

Répondre

2

Plus rapide que l'utilisation String.split est Pattern.split: c'est-à-dire, précompiler le motif et le stocker pour une utilisation ultérieure. Si vous utilisez le même modèle tout le temps, et que vous faites beaucoup de division en utilisant ce modèle, il peut être utile de placer ce modèle dans un champ statique ou quelque chose comme ça.

En outre, si votre modèle contient pas métacaractères regex, vous pouvez passer Pattern.LITERAL lors de la création du modèle. C'est quelque chose que vous ne pouvez pas faire avec String.split. :-P

Questions connexes