如何将多行String文本分割为对应行的String数组?
Java多行字符串转指定格式String数组
直接上两种实用的实现方式:
方法一:用String.split()快速分割
利用正则匹配跨平台的换行符(\n或\r\n),一行核心代码就能搞定,适合处理小文本:
import java.util.Arrays; public class StringSplitDemo { public static void main(String[] args) { String text = "test_123\ncheck_1 123 \ntest_1\nASD@#$\nqwer #$%\n^test 1\nthis is book"; // 按换行符分割,若不需要去除每行末尾空格,删掉.map这一行即可 String[] resultArray = Arrays.stream(text.split("\\r?\\n")) .map(String::trim) .toArray(String[]::new); // 输出成目标格式(去掉数组字符串里的空格) System.out.println(Arrays.toString(resultArray).replace(" ", "")); } }
说明:\\r?\\n能兼容Windows(\r\n)和Linux/Mac(\n)的换行格式;如果原文本每行末尾的空格需要保留,直接移除.map(String::trim)这一步就行。
方法二:用BufferedReader逐行读取
如果是处理超大的多行字符串,这种方式内存占用更低,运行更稳妥:
import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class BufferedReaderDemo { public static void main(String[] args) { String text = "test_123\ncheck_1 123 \ntest_1\nASD@#$\nqwer #$%\n^test 1\nthis is book"; List<String> lineList = new ArrayList<>(); try (BufferedReader reader = new BufferedReader(new StringReader(text))) { String line; // 逐行读取直到文本结束 while ((line = reader.readLine()) != null) { // 要保留空格就直接add(line) lineList.add(line.trim()); } } catch (IOException e) { e.printStackTrace(); } String[] resultArray = lineList.toArray(new String[0]); System.out.println(Arrays.toString(resultArray).replace(" ", "")); } }
两种方法运行后都会输出你要的格式:{"test_123","check_1 123","test_1","ASD@#$","qwer #$%^","test 1","this is book"}
内容的提问来源于stack exchange,提问作者Sandeep Sudhakar
相关产品推荐
相关产品推荐

