我正在尝试存储 .ics 文件中的某些行,以根据其内容分隔字符串。我已经能够将 .ics 文件转换为字符串,但我很难逐行搜索它以找到某些关键字。
字符串(和文件)包含:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//School of Rochester NY |-ECPv4.8.1//NONSGML v1.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:School of Rochester NY |
我已经能够在 logcat 中显示文本,但我无法将这些行保存为单独的字符串。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var textView = findViewById<TextView>(R.id.textView)
val file_name = "education-1e1a4bdab8e.ics"
val ics_string = application.assets.open(file_name).bufferedReader().use {
it.readText()
}
Log.i("TAG", ics_string)
textView.text = ics_string
if (ics_string.contains("BEGIN:VCALENDAR", ignoreCase = true))
{
Log.i("TAG", "contains event")
}
}
logcat 确认文本在文档中,但不确定是哪一行。 有没有办法将文本行添加为单独的字符串?
最佳答案
只看 BufferedReader
你已经有 4 个函数,它们都给你线。
-
readLines
给你一个List<String>
包含所有行 -
useLines
允许您使用一系列行,然后您可以对其进行转换,并确保在调用它之后,阅读器关闭 -
lineSequence()
返回一系列行,但在调用后不关闭阅读器 -
lines()
返回Stream<String>
包含这些行,基本上来自BufferedReader
本身。当您使用 Kotlin 时,您可能不想使用此方法。 -
useLines
和readLines
也可在File
上找到本身
由于我不确定您真正想要完成什么,我建议您从 readLines
开始直接地。 ics
- 文件通常很小,并且您仍然可以根据需要过滤/映射行。那么下一个最佳候选者可能是 useLines
或 lineSequence
.这实际上取决于您接下来要做什么。
关于android - 使用 Kotlin 在 .ics 文件中查找一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55269247/