android - 使用 Kotlin 在 .ics 文件中查找一行

标签 android kotlin

我正在尝试存储 .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 个函数,它们都给你线。

  1. readLines 给你一个 List<String>包含所有行
  2. useLines 允许您使用一系列行,然后您可以对其进行转换,并确保在调用它之后,阅读器关闭
  3. lineSequence() 返回一系列行,但在调用后不关闭阅读器
  4. lines() 返回 Stream<String>包含这些行,基本上来自 BufferedReader本身。当您使用 Kotlin 时,您可能不想使用此方法。
  5. useLines readLines 也可在 File 上找到本身

由于我不确定您真正想要完成什么,我建议您从 readLines 开始直接地。 ics - 文件通常很小,并且您仍然可以根据需要过滤/映射行。那么下一个最佳候选者可能是 useLineslineSequence .这实际上取决于您接下来要做什么。

关于android - 使用 Kotlin 在 .ics 文件中查找一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55269247/

相关文章:

android - 无法在 kotlin `when` 表达式中使用 string.contains()

java - 在 Android 3.1 上通过 USB 端口读取和写入数据

android - 如何制作像 Dropbox 应用程序中那样的菜单?

java - 安卓 : Validate half-width Japanese character

Kotlin:迭代对象的组件

android - 如何通过 Android/Kotlin App 上的 Koin 注入(inject)在 BaseActivity 中初始化/注入(inject)通用 ViewModel

android - 在应用程序更新期间提高 Android API 级别

javascript - 应用关闭时Android WebView保存显示状态

android - 如何添加phonegap蓝牙插件

android - 如何让recyclerview加载所有itemviews