J'ai besoin de quelque chose de similaire à "awk {print $ 1}", mais pour java. J'ai une chaîne, semblable à ceci:Java et sous-chaîne
mot1 mot2 mot3 word4 word5 Word6
Comment puis-je substring premier mot, de chaque ligne?
J'ai besoin de quelque chose de similaire à "awk {print $ 1}", mais pour java. J'ai une chaîne, semblable à ceci:Java et sous-chaîne
mot1 mot2 mot3 word4 word5 Word6
Comment puis-je substring premier mot, de chaque ligne?
String example = "word1 word2 word3 word4 word5 word6";
String firstWord = example.split(" ", 2)[0];
String example = "word1 word2 word3 word4 word5 word6";
int indexOf = example.indexOf(" ");
String firstWord = example.substring(0, indexOf == -1? example.length: indexOf);
Ceci échoue si la ligne n'a qu'un seul mot. –
Maintenant, il vous donnera une chaîne vide si vous avez seulement un mot. – lins314159
ok, j'ai corrigé que –
est ici une solution qui ne manque pas s'il n'y a qu'un seul mot sur la ligne. Je suppose que vous avez déjà supprimé les caractères nouvelle ligne, et cet espace est le seul séparateur autorisé:
for (String line: lines)
{
int index = line.indexOf(' ');
String firstWord;
if (index >= 0)
{
firstWord = line.substring(0, index);
}
else
{
firstWord = line;
}
System.out.println(firstWord);
}
ma solution n'échoue pas s'il n'y a qu'un seul mot ... si split() ne trouve pas le séparateur, il garde juste la chaîne dans le premier élément du tableau. –
Ma solution n'échoue pas non plus. De plus, il utilise beaucoup moins de mémoire et n'analyse pas toute la chaîne. Vous devriez au moins ajouter l'optimisation que j'ai suggérée comme commentaire à votre réponse. –
fait, merci (je répondais juste le "voici une solution qui ne manque pas ...") –
Assurez-vous simplement que la liste n'est pas vide lorsque vous parcourez les données. :) –
Utiliser split ("", 1) serait mieux. Il réduit le nombre de chaînes inutiles créées à une seule chaîne inutile au lieu de lots. –
corrigé, merci –