Java 中使用正则表达式分割 CSV 字符串
学习如何在Java中使用简单易懂的示例来拆分CSV(逗号分隔值),并将标记存储在数组或列表中。
1.使用正则表达式拆分CSV
我们可以使用正则表达式"\s*,\s*"
来匹配CSV字符串中的逗号,然后使用String.split()方法将字符串转换为标记数组。
String blogName = "how, to, do, in, java"; String[] tokenArray = blogName.split("\s*,\s*"); Assertions.assertArrayEquals(new String[]{"how", "to", "do", "in", "java"}, tokenArray);
请注意,正则表达式会处理字符串中多余的不需要的空格,并只对正确的字符串进行标记化。在下面的示例中,请注意逗号之间不需要的多个空格。
Assertions.assertArrayEquals(new String[]{"a", "b", "c"}, "a, b,c".split("\s*,\s*")); Assertions.assertArrayEquals(new String[]{"a", "b", "c"}, "a, b, c".split("\s*,\s*"));
2.将数组转换为列表
要获取标记的列表,我们可以将数组传递给Arrays.asList()方法,该方法返回一个由数组支持的固定大小、不可修改且只读的列表。
String[] tokenArray = blogName.split("\s*,\s*"); List<String> tokenList = Arrays.asList(tokenArray);
要获取可变的ArrayList,将从上述示例中接收到的只读列表中的所有元素复制到一个新的ArrayList对象中。
ArrayList<String> tokenArrayList = new ArrayList(Arrays.asList(tokenArray));
3.将列表转换为CSV字符串
如果我们想将列表转换为CSV格式的字符串,可以使用Java 8提供的String.join()方法
List<String> list = Arrays.asList("how", "to", "do", "in", "java"); String result = String.join(",", list); //delimited by comma Assertions.assertEquals("how,to,do,in,java", result);
上述示例将有助于在Java中将CSV转换为列表以及将列表转换为CSV。