2013-07-21 4 views
-1

У меня есть строка с несколькими строками, которая берется как пользовательский ввод. Я сломал строку в ArrayList на str.split("\\s ") и изменил определенное слово, если это произошло, теперь я хочу объединить слова в ArrayList с замещенным в нем словом и снова сформировать строку только в шаблоне с несколькими строками. Я не понимаю, как это сделать. Пожалуйста помоги.Преобразование arraylist в строку

+0

что вы пробовали, пост здесь .... –

+1

Для лучшей помощи раньше, опубликовать [SSCCE] (http://sscce.org/). –

+0

Итак, вы спрашиваете, как конкатенировать строки? – SLaks

ответ

4

Используя только стандартный Java (предполагается, что ваш ArrayList называется words)

StringBuilder sb = new StringBuilder(); 
for (String current : words) 
    sb.append(current).append(" "); 
String s = sb.toString().trim(); 

Если у вас есть Guava библиотеку, которую можно использовать Столяр:

String s = Joiner.on(" ").join(words) 

Оба они будут работать, даже если тип от words до String[].

Если вы хотите сохранить структуру строки, я предлагаю следующий подход: сначала разбить входную строку на строки, используя .split("\n"). Затем разделите каждую строку на слова, используя .split("\\s"). Вот как должен выглядеть код:

public String convert(String input, String wordToReplace, String replacement) { 
    StringBuilder result = new StringBuilder(); 
    String[] lines = input.split("\n"); 
    for (String line : lines) { 
    boolean isFirst = true; 
    for (String current : line.split("\\s")) { 
     if (!isFirst) 
     result.append(" "); 
     isFirst = false; 
     if (current.equals(wordToReplace)) 
     current = replacement; 
     result.append(current); 
    } 
    result.append("\n"); 
    } 

    return result.toString().trim(); 
} 
+0

Я предполагаю, что проблема заключается в конкатенации поддерживаемых строк. – Ankit