Java Android-在字符串中换行时拆分?(段)

Java Android-在字符串中换行时拆分?(段),java,android,regex,string,split,Java,Android,Regex,String,Split,我目前正在从包含一些段落的文本文件(.txt)中检索一些信息。当我从文本文件中检索字符串时,我希望将其拆分,以便将每个段落都放在一个字符串对象中 以下是我从文本文件中获得的文本: 我曾尝试使用换行符和回车换行符拆分字符串,但两者似乎都不起作用,请参见下面的代码: int pCount=0; public void parseData(String data){ String regex = "(\\n)"; String split[] = data.split(regex)

我目前正在从包含一些段落的文本文件(.txt)中检索一些信息。当我从文本文件中检索字符串时,我希望将其拆分,以便将每个段落都放在一个字符串对象中

以下是我从文本文件中获得的文本:

我曾尝试使用换行符和回车换行符拆分字符串,但两者似乎都不起作用,请参见下面的代码:

 int pCount=0;
public void parseData(String data){
    String regex = "(\\n)";
    String split[] = data.split(regex);
    for(int i = 0; i<split.length; i++){ 
        Log.e("e", pCount + " " + split[i]);
        pCount ++;
    }
}
intpcount=0;
公共数据(字符串数据){
字符串regex=“(\\n)”;
String split[]=data.split(正则表达式);

对于(int i=0;i我认为问题在于段落之间有几个不同的字符(空格、新行和回车)。请尝试以下方法:

int pCount=0;
public void parseData(String data){
    String regex = "([ \\t\\r]*\\n[ \\t\\r]*)+"; // Only this line is changed.
    String split[] = data.split(regex);
    for(int i = 0; i<split.length; i++){ 
        Log.e("e", pCount + " " + split[i]);
        pCount ++;
    }
}
intpcount=0;
公共数据(字符串数据){
String regex=“([\\t\\r]*\\n[\\t\\r]*)+”;//仅更改此行。
String split[]=data.split(正则表达式);

对于(int i=0;i我现在无法在Java中尝试它,但似乎源文件在每一行的开头都有一个空格(包括空格),并且有一个
组合可以转到下一行。 一个标准的ReGEXP,匹配一个这样的空白行的出现,在空白空间安全的方面是(引用java字符串定义):


“^*$”

下面的代码将告诉您新的段落分隔符存在的位置。之后将由您来处理。它只查找带有“”的行。 这是您提到的文件的一个特征。我在下面的代码示例中包含了用于读取该文件的过程,因为您在原始问题中没有指定该过程。我的一个想法是,您正在逐行读取该文件,然后尝试在每行执行正则表达式。我假设前面的建议如果将所有文本文件读入一个字符串,则uld工作

此外,您还可以将下面的代码分解为另一个函数

        try {
        BufferedReader in = new BufferedReader(new FileReader("plaintext.txt"));
        String inputDataLine;
        while ((inputDataLine = in.readLine()) != null) {
            if (!(inputDataLine.contentEquals(" "))) {
                System.out.println("What you want to do with a paragraph line");
            } else {
                System.out.println("What you want to do with a paragraph seperator");
            }
        }
        in.close();
    } catch (IOException e) {
    }

我认为最简单的方法是使用


您可以检查是否有空行
line.trim().equals(“”
),然后将其打断。不幸的是,它没有拆分任何内容,计数为0,我只返回完整的字符串。谢谢。
Scanner sc = new Scanner(new File("donal.txt"), "UTF-8");
sc.useDelimiter("\n[ \t]*\n");

List<String> result = new ArrayList<String>();
int lineCount = 0;
while (sc.hasNext())
{
  String line = sc.next();
  System.out.printf("%n%d:%n%s%n", ++lineCount, line);
  result.add(line);
}
System.out.printf("%n%d paragraphs found.%n", lineCount);
"(?:\r\n|[\r\n])[ \t]*(?:\r\n|[\r\n])