Trouver la première occurrence de n'importe quel symbole de la chaîne dans une autre chaîne

J'ai un problème: j'ai besoin de trouver la première occurrence de n'importe quel symbole de chaîne s2 (ou un tableau de char) dans la chaîne de s1.

Est-il fonction standard pour ce but? Si il n'y en a pas, ce qui est la bonne mise en œuvre de ce problème? (Bien sûr, je peux exécuter indexOf pour chaque char de mon s2, mais cela ne semble pas comme un bon algorithme, parce que si seul le dernier symbole se produit dans s1, nous devons courir à travers s1 |s2|-1 fois avant que je reçois une réponse).

Merci beaucoup!

  • Nope; la Java de la classe String n'a rien de ce genre. Pouvez-vous imaginer un meilleur algorithme que celui que vous décrivez?
  • Je emballer le caractère de la chaîne s2 dans un expression régulière par exemple, 'a|b|c|d" (les caractères spéciaux doivent être échappé) et ensuite utiliser Matcher.trouver des(..) pour obtenir la première occurrence.
  • Je doute que c'est plus rapide. À l'aide d'une expression régulière comme ça vous avez seulement besoin d'itérer une fois par le biais de la chaîne.
  • Bien que vous pourriez tout aussi bien parcourir manuellement vérifier si chaque personnage est dans le tableau de char (s2), qui serait encore plus rapide. Il va falloir faire des millions de fois, bien que pour l'une de ces être sensiblement différents.
  • J'ai posté un simpliste du fonctionnement de réponse qui montre comment il pourrait être fait à l'aide de regex comme @AndreHolzner suggère.
InformationsquelleAutor Finsky | 2011-11-14