java - Android - 在 String 中的换行符处拆分? (段落)

标签 java android regex string split

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

这是我从文本文件中得到的文本: http://www.carlowweather.com/plaintext.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 ++;
    }
}

我也尝试过“\r”和我通过网络搜索找到的各种组合,但似乎都无法在 Android 上使用此文本文件,我猜该文件不包含换行符或回车符?但只是空行?

将段落拆分为 String 对象的最佳方法是什么?

最佳答案

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

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);

第一段和最后一段实际上是页眉和页脚;我不知道你想对这些做什么。

为了可读性,我假设行分隔符始终是 Unix 风格的 \n,但为了安全起见,您应该允许使用 Windows 风格的 \r\n 和旧版 Mac 风格的 \r 也是如此。这将使正则表达式:

"(?:\r\n|[\r\n])[ \t]*(?:\r\n|[\r\n])

关于java - Android - 在 String 中的换行符处拆分? (段落),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9675359/

相关文章:

java - 接口(interface)中的 Setter 和对象到数组中

java - 在 Java 中格式化 tempTextField。

java - Lucene:如何索引文件名

android - 如何修复没有这样的 NoSuchMethodError flutter tabView?

regex - 如何在 Apache `/` 指令的正则表达式中转义斜杠符号 `<If>`?

python - 如何将 <br> 和 <p> 变成换行符?

regex - git clean 排除正则表达式

java - 用于双向 Hibernate 关联的 MapStruct 自定义列表映射

android - 如何仅在我的数字时钟中显示下午

android - 如何编写测试来检查 Robolectric 中 View 可见性是否消失?