Как найти количество новых строк и слов, разделенных символом «,» в Java?

#java #groovy

#java #groovy

Вопрос:

Моя строковая переменная содержит строку, каждая в отдельной строке. Как мне найти количество новых строк в нем, а затем каждое слово, разделенное , разделителем на определенной строке string? Содержимое переменной примерно такое, как показано ниже

 null37,Abhishek,ARS,b,ABC,Development,2011-05-30 00:00:00.0,abhishek123@cjb.net
null38,Abhishek,SAS,c,ABC,Development,2011-05-30 00:00:00.0,abhishek123@cjb.net
null39,Abhishek,DGV,a,ABC,Production,2011-05-30 00:00:00.0,abhishek123@cjb.net
  

Отредактировано:

Я пробовал это

 String xmlstr="""null37,Abhishek,ARS,b,ABC,Development,2011-05-30 00:00:00.0,abhishek123@cjb.net
null38,Abhishek,SAS,c,ABC,Development,2011-05-30 00:00:00.0,abhishek123@cjb.net
null39,Abhishek,DGV,a,ABC,Production,2011-05-30 00:00:00.0,abhishek123@cjb.net"""

String[] splitStr = xmlstr.split('n');
for(String str : splitStr)
{
    String splitted = str.split(',');
    println splitted
}
  

Я получаю что-то неизвестное,

 [Ljava.lang.String;@148bd3
[Ljava.lang.String;@a4e743
[Ljava.lang.String;@4aeb52
  

Комментарии:

1. вы пробовали использовать анализатор csv?

2. Я понятия не имею о анализаторе csv

3. разделенным должно быть String[] (не String) — это была ваша единственная ошибка — смотрите Мой ответ для получения дополнительной информации

Ответ №1:

Чтобы получить количество новых строк, выполните

 int newLines = myString.split("\r?\n").length;
  

Чтобы каждое слово разделялось запятой, выполните

 String[] words = myString.split(",");
  

Ответ №2:

Вы также могли бы использовать splitEachLine метод Groovy.

Это работает следующим образом:

 String xmlstr = """null37,Abhishek,ARS,b,ABC,Development,2011-05-30 00:00:00.0,abhishek123@cjb.net
null38,Abhishek,SAS,c,ABC,Development,2011-05-30 00:00:00.0,abhishek123@cjb.net
null39,Abhishek,DGV,a,ABC,Production,2011-05-30 00:00:00.0,abhishek123@cjb.net"""

xmlstr.splitEachLine( /,/ ) { tokens ->
  println "${tokens[1]} : ${tokens[7]}"
}
  

Это выводит:

 Abhishek : abhishek123@cjb.net
Abhishek : abhishek123@cjb.net
Abhishek : abhishek123@cjb.net
  

Ответ №3:

Ваша ошибка заключалась только в том, что

 String splitted = str.split(','); // Wrong
  

должен был быть массив:

 String[] splitted = str.split(','); // Fixed
  

Когда программа Java печатает массивы, за первым символом L следует класс, а затем ячейка памяти объекта.

Вот некоторый Java-код, который будет скомпилирован, чтобы вы могли увидеть проблему, которую скрывают языки сценариев:

 String[] lines = originalString.split("\r?\n")); // Do this only once

int numberOfNewLines = lines.length;
int myLine = 5; // Say

String[] words = lines[myLine];
  

Вы могли бы легко обернуть эту идею в какой-нибудь чистый код.

Ответ №4:

символ новой строки — ‘ n’. итак, вы должны сначала разделить на ‘ n’ . затем разделить на ‘,’ .

 String[] splittedByNewLine = originalString.Split('n');

for(String str : splittedByNewLine )
{
   String[] splittedByComma = str.split(',');
   for(String str : splittedByComma )
   {
       "println str..."
   }       
}
  

Комментарии:

1. Извините, OP пометил вопрос как java . Ваш код написан на C #.

2. Я преобразовал ваш код в java и использовал его, я отредактировал свой вопрос, можете взглянуть. Спасибо за ответ