我正在寻找一个字符串,并在换行符时将其分解为一个数组(\ n)我尝试使用split
但是它取消了分隔符。我需要将\n
保留在每行的末尾(如果存在)。这样的事情是否已经存在或我是否需要自己编码?
答案 0 :(得分:4)
我尝试使用split但是它会删除分隔符。我需要将\ n保存在每行的末尾(如果存在)。
如果在正则表达式中使用前瞻或后视,您仍然可以使用它并保留换行符。查看我所知道的最佳正则表达式教程:
Regex Tutorial
Look-Around section of the Regex Tutorial
例如:
public class RegexSplitPageBrk {
public static void main(String[] args) {
String text = "Hello world\nGoodbye cruel world!\nYeah this works!";
String regex = "(?<=\\n)"; // with look-behind!
String[] tokens = text.split(regex);
for (String token : tokens) {
System.out.print(token);
}
}
}
前瞻或后视(也称为“环顾四周”)对他们匹配的角色没有破坏性。
答案 1 :(得分:4)
使用Lookahead断言替代@Hovercraft解决方案:
String[] result = s.split("(?=\n)");
中关于Lookahead的更多详细信息
答案 2 :(得分:1)
另一个解决方案是在拆分后添加分隔符
String delimiter = "\n"
String[] split = input.split(delimiter);
for(int i = 0; i < split.length; i++){
split[i] += delimiter;
}