这是我的意见
.... ALPO..LAPOL.STRING
我想在每个字符串到达'时'分隔.并存储在字符串数组列表中.
我尝试使用以下代码,
ArrayList<String> words = new ArrayList<> (Arrays.asList(chars.stream().map(String::valueOf)
.collect(Collectors.joining("")).split("\\.+")));
Run Code Online (Sandbox Code Playgroud)
正则表达式分割("\.+"))存在问题.
预期产量:
ALPO
LAPOL
串
实际输出:
"" - >空白
LAPOL
串
它将列表的第一个值打印为空值,因为有许多'.' 在'A'之前出现.如何摆脱字符串数组列表中的这个空值.任何帮助都会很高兴!
出现空元素是因为分隔符在您需要获取的第一个值之前匹配.
您需要首先从字符串的开头删除分隔符符号.replaceFirst("^\\.+", ""),然后拆分:
String results[] = "....ALPO..LAPOL.STRING".replaceFirst("^\\.+", "").split("\\.+");
System.out.println(Arrays.toString(results));
Run Code Online (Sandbox Code Playgroud)
请参阅IDEONE演示
该^\\.+模式匹配字符串(^)的开头,然后匹配1个或多个文字点(\\.+).replaceFirst因为预期只需要1次更换(不需要使用replaceAll).
有关Java中拆分的更多详细信息,请参阅文档:
public String[] split(String regex)
将此字符串拆分为给定正则表达式的匹配项. 此方法的工作方式就像调用split带有给定表达式和limit参数的双参数方法一样zero.因此,结尾的空字符串不包含在结果数组中.
但是,如果找到,将包括前导空元素.所以,我们首先需要在字符串开头摆脱那些分隔符.
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |