-1

我有一个多行字符串作为用户输入。我将字符串分解为ArrayListbystr.split("\\s ")并更改了某个特定单词(如果出现),现在我想将其中的单词ArrayList与其中的替换单词合并,并仅以多行模式再次形成字符串。我不知道如何做到这一点。请帮忙。

4

1 回答 1

4

仅使用标准 Java(假设您的 ArrayList 被调用words

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

如果你有Guava库,你可以使用 Joiner:

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();
}
于 2013-07-21T19:16:05.543 回答