使用Scanner类
Scanner类是Java中常用的用于读取输入的类。它提供了
nextLine()
方法用于读取一行字符串。我们可以利用这个方法来读取多行字符串。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
String line = scanner.nextLine();
while (!line.isEmpty()) {
sb.append(line).append("\n");
line = scanner.nextLine();
String result = sb.toString();
System.out.println(result);
上述代码中,我们首先创建了一个Scanner对象,并使用nextLine()
方法读取一行字符串。然后,我们使用一个循环来读取后续的行,直到遇到空行为止。在循环中,我们将每一行字符串追加到StringBuilder对象中,并在每一行的末尾添加一个换行符。最后,我们将StringBuilder对象转换为String对象,并输出结果。
使用BufferedReader类
BufferedReader类是Java中常用的用于读取文本文件的类。它提供了readLine()
方法用于读取一行字符串。我们可以利用这个方法来读取多行字符串。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String line = reader.readLine();
while (line != null && !line.isEmpty()) {
sb.append(line).append("\n");
line = reader.readLine();
String result = sb.toString();
System.out.println(result);
上述代码中,我们首先创建了一个BufferedReader对象,并使用readLine()
方法读取一行字符串。然后,我们使用一个循环来读取后续的行,直到遇到空行为止。在循环中,我们将每一行字符串追加到StringBuilder对象中,并在每一行的末尾添加一个换行符。最后,我们将StringBuilder对象转换为String对象,并输出结果。
使用StringTokenizer类
StringTokenizer类是Java中常用的用于分割字符串的类。我们可以利用它的hasMoreTokens()
和nextToken()
方法来读取多行字符串。
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
String input = "line 1\nline 2\nline 3\n";
StringTokenizer tokenizer = new StringTokenizer(input, "\n");
StringBuilder sb = new StringBuilder();
while (tokenizer.hasMoreTokens()) {
String line = tokenizer.nextToken();
sb.append(line).append("\n");
String result = sb.toString();
System.out.println(result);
上述代码中,我们首先创建了一个StringTokenizer对象,并将输入字符串和分隔符"\n"作为参数传递给它。然后,我们使用一个循环来遍历所有的分割后的字符串,并将每一行字符串追加到StringBuilder对象中,并在每一行的末尾添加一个换行符。最后,我们将StringBuilder对象转换为String对象,并输出结果。
使用正则表达式
如果多行字符串之间存在特定的分隔符,我们可以使用正则表达式来读取这些字符串。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String input = "line 1\nline 2\nline 3\n";
Pattern pattern = Pattern.compile("line \\d");
Matcher matcher = pattern.matcher(input);
StringBuilder sb = new StringBuilder();
while (matcher.find()) {
String line = matcher.group();
sb.append(line).append("\n");
String result = sb.toString();
System.out.println(result);
上述代码中,我们首先创建了一个Pattern对象,并使用正则表达式"line \d"来匹配所有以"line "开头的字符串。然后,我们使用一个循环来遍历所有匹配的字符串,并将每一行字符串追加到StringBuilder对象中,并在每一行的末尾添加一个换行符。最后,我们将StringBuilder对象转换为String对象,并输出结果。