是否有一种简单的方法可以将多行文本连接成一个字符串,而无需不断添加换行符?

Mar*_*328 13 java string concatenation append

所以我基本上需要这样做:

String text = "line1\n";
text += "line2\n";
text += "line3\n";
useString( text );
Run Code Online (Sandbox Code Playgroud)

涉及的更多,但这是基本的想法.有没有什么可以让我做更多的事情呢?

DesiredStringThinger text = new DesiredStringThinger();
text.append( "line1" );
text.append( "line2" );
text.append( "line3" );
useString( text.toString() );
Run Code Online (Sandbox Code Playgroud)

显然,它不需要像那样工作,但我认为我得到了基本的观点.总是可以选择编写一个循环来自己处理文本,但是如果有一个标准的Java类已经做了类似的事情而不是我需要在应用程序之间进行一个类就这样我就可以了.做一些如此微不足道的事情.

谢谢!

Joa*_*uer 15

你可以用一个StringWriter包裹在PrintWriter:

StringWriter stringWriter = new StringWriter();
PrintWriter writer = new PrintWriter(stringWriter, true);
writer.println("line1");
writer.println("line2");
writer.println("line3");
useString(stringWriter.toString());
Run Code Online (Sandbox Code Playgroud)


mis*_*tor 8

AFAIK没有允许您这样做的库类.

以下工作如下:

class DesiredStringThinger {
  StringBuilder text = new StringBuilder();

  public void append(String s) { text.append(s).append("\n"); }

  @Override
  public String toString() { return text.toString(); }
}
Run Code Online (Sandbox Code Playgroud)

  • @Tomislav:怎么样? (2认同)

Arv*_*ash 6

Java SE 8

对于 Java SE 8,可以通过以下几种其他方法:

  1. 使用String#join
  2. 使用Stream

演示:

import java.util.Arrays;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        String[] arr = { "line1", "line2", "line3" };

        // Using String#join
        System.out.println(String.join(System.lineSeparator(), arr));

        System.out.println();

        // Using Stream
        System.out.println(Arrays.stream(arr).collect(Collectors.joining(System.lineSeparator())));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

line1
line2
line3

line1
line2
line3
Run Code Online (Sandbox Code Playgroud)