我有以下文本字符串,由一个文本块后跟两个或更多文本组成 新行字符(\ n可能\ r \ n)后跟另一个文本块等,如此
多行文字
(两个或更多新行字符)
多行tex
(两个或更多新行字符)
我想将这个字符串分解为与使用新行作为断开边界的文本块数一样多的子串。
我试过
public static int indexOf(Pattern pattern, String s) {
Matcher matcher = pattern.matcher(s);
return matcher.find() ? matcher.start() : -1;
}
pStart[i-1] = start + indexOf(Pattern.compile("[\\n\\n]+"), text.substring(start));
但它不起作用。
有更好的想法来处理吗?
答案 0 :(得分:3)
您需要了解[\\n\\n]
仅表示一个新行字符\n
,因为它位于字符类中。在内部字符类中,只匹配列出的一个字符。
您可以使用:
\\n{2}
代替匹配新的换行符。
答案 1 :(得分:1)
任何简单的方法是使用带有正则表达式的字符串拆分函数:
String sampleText = new String("first\nsecond\n\r");
String [] blocks = sampleText.split("\n{1,}[\r]?");
以上假设'1或更多\ n'并且可选地'1 \ r' 您可以将正则表达式更改为'\ n {2,} [\ r]?'两个或更多'\ n'取决于你想要的东西。
Oracle Java 6 String Split Docs
干杯!