2016-01-05 5 views
0

Выполнение этого кода:Как объединить все строки в одну строку?

for(int i = 0 ; i <= 5 ; i++) { 
    String id = driver.findElement(By.xpath("//[@id='selectpatientid_" + i + "']")).getText(); 
    System.out.println(id); 
} 

Выход набора строк:

vil00043 
vil00032 
vil00054 
vil00032 

Как можно объединить и сохранить все эти строки в одну строку?

+0

конкат id в одну строку var и печатать вне цикла. – Zia

+0

Было бы хорошо, если бы вы могли выбрать правильный ответ, чтобы вопрос закрылся. –

ответ

0

Первый подход заключается в использовании String.Concat(), как показано ниже,

String str=""; 
String id =""; 
    for(int i=0;i<=5;i++){ 
     id = driver.findElement(By.xpath("//[@id='selectpatientid_"+i+"']")).getText(); 
    str.concat(id); 
     } 
    System.out.println(str); 

Но выше подход вызывает множественные творения String. я предлагаю пойти на StringBuilder,

StringBuilder finalStringb =new StringBuilder(); 
String id =""; 
     for(int i=0;i<=5;i++){ 
      id = driver.findElement(By.xpath("//[@id='selectpatientid_"+i+"']")).getText(); 
     finalStringb.append(id); 
      } 
     System.out.println(finalStringb); 

Примечание - `The метод CONCAT() класса Струнный принимает строку в качестве параметра, он добавляет указанную строку, и возвращает новую строку. На самом деле этот метод concat() создает новый массив символов для обеих строк, а затем помещает обе строки в новый массив, а затем снова создает новую String с этим массивом. Он снижает производительность. StringBuilder работает более эффективно. Короче говоря, если вы используете конкатенацию String в цикле, вы можете использовать StringBuilder (а не StringBuffer) вместо String, потому что он намного быстрее и потребляет меньше памяти.

+0

, если вы взяли последний абзац из этого ответа слово в слово, вы должны отнести этот ответ, иначе мне придется его удалить. http://stackoverflow.com/questions/4645020/when-to-use-stringbuilder-in-java/4645147#4645147 –

0

Изменение способа печати с помощью println() в print() должен делать эту работу, как:

for(int i = 0 ; i <= 5 ; i++) { 
    String id = driver.findElement(By.xpath("//[@id='selectpatientid_" + i + "']")).getText(); 
    System.out.print(id); 
} 

Как print не вызывают новую линию каждый раз, все данные будут напечатаны в той же строке, если только вы печатаете \n. Таким образом, это позволит устранить необходимость в использовании concat строки или StringBuilder

Выход после использования print():

vil00043vil00032vil00054vil00032

Если вы хотите более подробную информацию о печати против Println: here и here

Метод печати («aString») печатает только string "aString", но не перемещает курсор в новую строку. Следовательно, последующие инструкции печати будут печататься в одной строке. Метод println («aString») печатает строку «aString» и перемещает курсор на новую строку

Смежные вопросы