如何在Kotlin中将Assets的.txt文件转换为ArrayList<String>格式?
将Assets中的坐标字符串转为String数组/ArrayList
方法一:正则匹配(推荐,适配坐标含逗号的场景)
你的文本内容是多个"经度,纬度"格式的元素用逗号拼接而成,用正则表达式可以精准提取每个带引号的坐标单元,避免坐标里的逗号干扰分割逻辑:
// 先读取文件内容 val jsonString = application.assets.open(fileName).bufferedReader().use { it.readText() } // 定义正则,匹配所有被双引号包裹的内容 val coordinatePattern = Regex("\"([^\"]+)\"") // 提取所有匹配结果,转为List<String> val coordinatesList: List<String> = coordinatePattern.findAll(jsonString) .map { it.groupValues[1] } // 这里拿到的是去掉引号的坐标,比如"97.95...,3.15..."变成97.95...,3.15... // 如果需要保留双引号,就把上面的map改成 it.value .toList() // 转成ArrayList<String>的话: val coordinatesArrayList = ArrayList(coordinatesList)
方法二:字符串分割(仅适用于无多余逗号的简单场景)
如果能确保文本里只有分隔元素的逗号,没有其他多余符号,可以用分割的方式快速处理:
val jsonString = application.assets.open(fileName).bufferedReader().use { it.readText() } // 先清理字符串前后的空白,然后按"\",\""分割 val rawElements = jsonString.trim().split("\",\"") // 处理首尾元素的引号,转成List val coordinatesList = rawElements.map { it.removeSurrounding("\"") }.toList() // 转ArrayList val coordinatesArrayList = ArrayList(coordinatesList)
额外提示
如果你的txt文件是标准JSON数组格式(前后带[]),记得先去掉括号:
val cleanedString = jsonString.trim().removeSurrounding("[", "]") // 再用上面的方法处理cleanedString
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

