我有以下字符串:
String fullPDFContex = "Title1 Title2\r\nTitle3 Title4\r\n\r\nTitle5 Title6\r\n \r\n Title7 \r\n\r\n\r\n\r\n\r\n"
我想将它转换为一个String数组,看起来像这样。
String[] Title = {"Title1 Title2","Title3 Title4","Title5 Title6","Title7"}
我正在尝试以下代码。
String[] Title=fullPDFContext.split("\r\n\r\n|\r\n \r\n|\r\n");
但没有获得所需的输出。
答案 0 :(得分:2)
您需要使用匹配任意数量的包含换行符的空白的模式进行拆分:
String fullPDFContex = "Title1 Title2\r\nTitle3 Title4\r\n\r\nTitle5 Title6\r\n \r\n Title7 \r\n\r\n\r\n\r\n\r\n";
String separator = "\\p{javaWhitespace}*\\R\\p{javaWhitespace}*";
String results[] = fullPDFContex.split(separator);
System.out.println(Arrays.toString(results));
// => [Title1 Title2, Title3 Title4, Title5 Title6, Title7]
请参阅Java demo。
\\p{javaWhitespace}*\\R\\p{javaWhitespace}*
匹配
\\p{javaWhitespace}*
- 0+ whitespaces \\R
- 换行符(对于Java 7及更早版本,您可以将其替换为[\r\n]
)\\p{javaWhitespace}*
- 0+空格。或者,您可以使用更高效的
String separator = "[\\s&&[^\r\n]]*\\R\\s*";
请参阅another demo
不幸的是,\R
构造不能在字符类中使用。模式将匹配:
[\\s&&[^\r\n]]*
- 除CR和LF之外的零个或多个空格字符(此处使用字符类减法)\\R
- 换行符\\s*
- 任何0+空白字符。答案 1 :(得分:0)
这是您的解决方案。我们可以使用 StringTokenizer &我已经使用列表来插入拆分值。如果您从数组中分割了n个值,这可以帮助您
package com.sujit;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class UserInput {
public static void main(String[] args) {
String fullPDFContex = "Title1 Title2\r\nTitle3 Title4\r\n\r\nTitle5 Title6\r\n \r\n Title7 \r\n\r\n\r\n\r\n\r\n";
StringTokenizer token = new StringTokenizer(fullPDFContex, "\r\n");
List<String> list = new ArrayList<>();
while (token.hasMoreTokens()) {
list.add(token.nextToken());
}
for (String string : list) {
System.out.println(string);
}
}
}
答案 2 :(得分:0)
使用此代码,您可以获得所需的输出:
String[] Title = fullPDFContext.split(" *(\r\n ?)+ *");