[JAVA] Comment marquer les mots-clés de recherche indépendamment de la casse et sans changer le mot source de la recherche

Un jour, une personne formidable m'a demandé de «baliser» le mot-clé, quelle que soit sa taille et de «ne pas changer le mot-clé de la source de recherche», et de le voir. S'il te plait accepte-le.

Objectif

Supposons que data contienne le texte de la source de recherche. D'autre part, le but de cette fois est de renvoyer la chaîne de caractères comme si elle était balisée quelle que soit la taille lors de la recherche avec «mot-clé».

résultat

  1. Jugez le "mot-clé" avant "(? I)" quelle que soit la taille (i signifie insentive)
  2. Mettez le "mot-clé" dans "()" pour créer un groupe
  3. Ajoutez la pièce à modifier + $ 1 (Au fait, s'il y a deux groupes, $ 1 $ 2)

↓ ↓ Il ressemble à ceci lorsqu'il est écrit dans le code ↓ ↓

String keyword = "java";
String data = "Java java javaJava";

// (?i)N'est pas sensible à la casse
//Hit personnages()Par groupe
data = data.replaceAll("((?i)" + Pattern.quote(keyword) + ")", "<mark>$1</mark>");

// <mark>Java</mark> <mark>java</mark> <mark>java</mark><mark>Java</mark>
System.out.println(data);

Gist

Vers le résultat

On m'a dit que ce serait gênant si je le faisais avec un gorigori. .. .. Lol (je me demandais si c'était pendant)

Mauvais exemple


Pattern p = Pattern.compile(keyword, Pattern.CASE_INSENSITIVE).matcher(data);
while(p.find()) {
  int start = p.start();
  int end   = p.end();
  ~Calculez à partir des informations de localisation trouvées et remplissez la balise gorigori~
}

Impressions

Je pense que j'ai pu le mettre en œuvre assez proprement et complètement. Je veux rechercher n'importe quoi, marquer et afficher les résultats! Comment écrire qui est parfait pour le traitement. Ceci n'est qu'un exemple, veuillez donc l'utiliser comme référence.

Site de référence

http://a4dosanddos.hatenablog.com/entry/2016/04/06/002657

Recommended Posts

Comment marquer les mots-clés de recherche indépendamment de la casse et sans changer le mot source de la recherche
[Rails] Comment obtenir l'URL de la source de transition et la rediriger
[Cas d'amélioration Java] Comment atteindre la limite de l'auto-apprentissage et au-delà
[Java] Comment obtenir l'URL de la source de transition
Comment ajouter des éléments sans spécifier la longueur du tableau
Comment modifier le contenu du fichier jar sans décompresser
Comment vérifier l'extension et la taille des fichiers téléchargés
[Docker] Comment sauvegarder et restaurer les données de base de données de l'application Rails sur docker-compose [MySQL]
[Swift5] Comment obtenir un tableau et un ensemble de différences entre les tableaux
Comment définir l'adresse IP et le nom d'hôte de CentOS8
[jOOQ] Comment utiliser CASE WHEN dans la clause WHERE / AND / OR
Comment déterminer le nombre de parallèles
Comment configurer et utiliser kapt
Comment trier une liste de SelectItems
Comment trouver les dizaines et les unités
Différence entre Java, C # et JavaScript (comment trouver le degré d'obésité)
Comment trouver la cause de l'erreur Ruby
Personnalisez la répartition du contenu de Recyclerview
Sortie de la façon d'utiliser la méthode slice
Comment configurer et utiliser jEnv (Mac)
Comment afficher le résultat du remplissage du formulaire
Comment trouver le score total et le score moyen
[Java] Mémo sur la façon d'écrire la source
Comment définir une limite de relance pour sidekiq et notifier les files d'attente mortes avec Slack
[Swift5] Comment arrondir, arrondir et arrondir les deuxième et troisième points minoritaires