J'ai besoin de compter le nombre d'espaces dans ma chaîne, mais mon code me donne un mauvais numéro lorsque je l'exécute.
int count=0;
String arr[]=s.split("\t");
OOPHelper.println("Number of spaces are: "+arr.length);
count++;
s.length() - s.replaceAll(" ", "").length()
vous renvoie le nombre d'espaces.
Il y a plus de façons. Par exemple"
int spaceCount = 0;
for (char c : str.toCharArray()) {
if (c == ' ') {
spaceCount++;
}
}
etc.
Dans votre cas, vous avez essayé de scinder la chaîne en utilisant \t
- TAB. Vous obtiendrez un résultat correct si vous utilisez plutôt " "
. Utiliser \s
peut être déroutant, car il correspond à tous les espaces blancs - espaces normaux et tabulations.
Voici une autre façon de voir les choses, et il s’agit d’une simple ligne:
int spaces = s.replaceAll("[^ ]", "").length();
Cela fonctionne en supprimant efficacement tous les non-espaces puis en prenant la longueur de ce qui reste (les espaces).
Vous voudrez peut-être ajouter une vérification nulle:
int spaces = s == null ? 0 : s.replaceAll("[^ ]", "").length();
Vous pouvez aussi utiliser un flux:
int spaces = s.chars().filter(c -> c == (int)' ').count();
\t
correspondra à des tabulations, plutôt que des espaces et devrait également être référencé avec un double slash: \\t
Vous pouvez appeler s.split( " " )
mais cela ne comptera pas les espaces consécutifs. Je veux dire par là ...
String bar = " ba jfjf jjj j ";
String[] split = bar.split( " " );
System.out.println( split.length ); // Returns 5
Donc, malgré le fait qu'il y ait sept caractères d'espace, il n'y a que cinq blocs d'espace. Cela dépend de ce que vous essayez de compter, je suppose.
Commons Lang est votre ami pour celui-ci.
int count = StringUtils.countMatches( inputString, " " );
Le moyen le plus rapide de le faire serait:
int count = 0;
for(int i = 0; i < str.length(); i++) {
if(Character.isWhitespace(str.charAt(i))) count++;
}
Cela intercepterait tous les caractères considérés comme des espaces.
Les solutions de regex nécessitent la compilation de regex et son exécution - avec beaucoup de temps système. Obtenir un tableau de caractères nécessite une allocation. Itérer sur un tableau d'octets serait plus rapide, mais seulement si vous êtes sûr que vos caractères sont en ASCII.
Si vous utilisez Java 8, les opérations suivantes devraient fonctionner:
long count = "0 1 2 3 4.".chars().filter(Character::isWhitespace).count();
Cela fonctionnera également avec Java 8 avec Eclipse Collections :
int count = CharAdapter.adapt("0 1 2 3 4.").count(Character::isWhitespace);
Remarque: je suis un partisan des collections Eclipse.
Une autre façon en utilisant des expressions régulières
int length = text.replaceAll("[^ ]", "").length();
Votre code comptera le nombre d'onglets et non le nombre d'espaces. En outre, le nombre d'onglets sera un de moins que arr.length
.
Une solution utilisant Java.util.regex.Pattern/Java.util.regex.Matcher
String test = "foo bar baz ";
Pattern pattern = Pattern.compile(" ");
Matcher matcher = pattern.matcher(test);
int count = 0;
while (matcher.find()) {
count++;
}
System.out.println(count);
s'il vous plaît vérifier le code suivant, il peut aider
public class CountSpace {
public static void main(String[] args) {
String Word = "S N PRASAD RAO";
String data[];int k=0;
data=Word.split("");
for(int i=0;i<data.length;i++){
if(data[i].equals(" ")){
k++;
}
}
System.out.println(k);
}
}
Le code que vous avez fourni serait d'imprimer le nombre d'onglets, pas le nombre d'espaces. La fonction ci-dessous devrait compter le nombre de caractères d'espacement dans une chaîne donnée.
int countSpaces(String string) {
int spaces = 0;
for(int i = 0; i < string.length(); i++) {
spaces += (Character.isWhitespace(string.charAt(i))) ? 1 : 0;
}
return spaces;
}
public static void main(String[] args) {
String str = "Honey dfd tEch Solution";
String[] arr = str.split(" ");
System.out.println(arr.length);
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (!arr[i].trim().isEmpty()) {
System.out.println(arr[i]);
count++;
}
}
System.out.println(count);
}
Je devais faire quelque chose de semblable à ceci et voici ce que j'ai utilisé:
String string = stringValue;
String[] stringArray = string.split("\\s+");
int length = stringArray.length;
System.out.println("The number of parts is: " + length);
public static void main(String[] args) {
Scanner input= new Scanner(System.in);`
String data=input.nextLine();
int cnt=0;
System.out.println(data);
for(int i=0;i<data.length()-1;i++)
{if(data.charAt(i)==' ')
{
cnt++;
}
}
System.out.println("Total number of Spaces in a given String are " +cnt);
}
Le moyen le plus précis et le plus rapide et le plus rapide d'y parvenir est:
String Name="Infinity War is a good movie";
int count =0;
for(int i=0;i<Name.length();i++){
if(Character.isWhitespace(Name.charAt(i))){
count+=1;
}
}
System.out.println(count);
Ce programme va certainement vous aider.
class SpaceCount
{
public static int spaceCount(String s)
{ int a=0;
char ch[]= new char[s.length()];
for(int i = 0; i < s.length(); i++)
{ ch[i]= s.charAt(i);
if( ch[i]==' ' )
a++;
}
return a;
}
public static void main(String... s)
{
int m = spaceCount("Hello I am a Java Developer");
System.out.println("The number of words in the String are : "+m);
}
}
Le moyen le plus simple et le plus rapide de compter les espaces
String fav="foo hello me hi";
for( int i=0; i<fav.length(); i++ ) {
if(fav.charAt(i) == ' ' ) {
counter++;
}
}