Мне нужно подсчитать количество пробелов в моей строке, но мой код дает мне неправильный номер, когда я запускаю его, что не так?
int count=0;
String arr[]=s.split("\t");
OOPHelper.println("Number of spaces are: "+arr.length);
count++;
Мне нужно подсчитать количество пробелов в моей строке, но мой код дает мне неправильный номер, когда я запускаю его, что не так?
int count=0;
String arr[]=s.split("\t");
OOPHelper.println("Number of spaces are: "+arr.length);
count++;
s.length() - s.replaceAll(" ", "").length()
возвращает количество пробелов.
Есть больше способов. Например,
int spaceCount = 0;
for (char c : str.toCharArray()) {
if (c == ' ') {
spaceCount++;
}
}
и т.д. и т.д.
В вашем случае вы попытались разделить строку, используя \t
- TAB. Вы получите правильный результат, если вместо этого используете " "
. Использование \s
может сбивать с толку, поскольку оно соответствует всем белым - обычным пробелам и TAB.
Здесь другой способ взглянуть на него, и это простой однострочный:
int spaces = s.length() - s.replace(" ", "").length();
Это работает, потому что он эффективно вычитает количество символов, которые не являются пробелами из общей длины. Вы можете добавить нулевую проверку:
int spaces = s == null ? 0 : s.length() - s.replace(" ", "").length();
Обратите внимание, что использование replace()
, которое быстрее, чем replaceAll()
.
Вы также можете использовать поток:
int spaces = s.chars().filter(c -> c == (int)' ').count();
\t
будет соответствовать вкладкам, а не пробелам, и также следует ссылаться на двойную косую черту: \\t
. Вы можете вызвать s.split( " " )
, но это не будет означать последовательные пробелы. Под этим я подразумеваю...
String bar = " ba jfjf jjj j ";
String[] split = bar.split( " " );
System.out.println( split.length ); // Returns 5
Итак, несмотря на то, что есть семь пробелов, есть только пять блоков пространства. Наверное, это зависит от того, что вы пытаетесь подсчитать.
Commons Lang является вашим другом для этого.
int count = StringUtils.countMatches( inputString, " " );
Самый быстрый способ сделать это:
int count = 0;
for(int i = 0; i < str.length(); i++) {
if(Character.isWhitespace(str.charAt(i))) count++;
}
Это приведет к захвату всех символов, которые считаются пробельными.
Регремные решения требуют компиляции регулярных выражений и исключения из них - с большим количеством накладных расходов. Получение массива символов требует выделения. Итерация по байтовому массиву будет быстрее, но только если вы уверены, что ваши символы ASCII.
Ваш код будет подсчитывать количество вкладок, а не количество пробелов. Кроме того, количество вкладок будет меньше, чем arr.length
.
Другой способ использования регулярных выражений
int length = text.replaceAll("[^ ]", "").length();
Если вы используете Java 8, следующее должно работать:
long count = "0 1 2 3 4.".chars().filter(Character::isWhitespace).count();
Это также будет работать на Java 8, используя Eclipse Collections:
int count = CharAdapter.adapt("0 1 2 3 4.").count(Character::isWhitespace);
Примечание. Я являюсь коммиттером для коллекций Eclipse.
Приведенный вами код будет печатать количество вкладок, а не количество пробелов. Функция ниже должна подсчитывать количество пробельных символов в заданной строке.
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;
}
Решение с использованием 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);
открытый класс 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);
}
}
Мне просто нужно было сделать что-то похожее на это, и это то, что я использовал:
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) {
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);
}
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);
}
Эта программа определенно поможет вам.
класс 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);
}
}