如何将文件读取的类列表字符转为Kotlin的mutableListOf<String>()?
解决方法:将类列表格式的字符串转换为MutableList
这问题我太熟悉了!你现在读取到的list其实是一整个字符串,而不是Kotlin的List对象——文件里的[aaa, aah, aal...]只是文本格式,不是代码层面的列表,所以直接按索引访问才会拿到[和a这种单个字符。
下面给你几个直接可行的转换方法:
方法一:字符串解析(最推荐,无额外依赖)
利用字符串处理工具,先清理掉首尾的方括号,再按分隔符分割成单词列表,最后转成MutableList:
import java.io.File fun main() { val fileContent = File("src/resources/words_threeLetters.txt").readText() val wordList: MutableList<String> = fileContent .trimStart('[') // 移除开头的`[` .trimEnd(']') // 移除结尾的`]` .split(", ") // 按`, `(逗号加空格)分割成普通List<String> .toMutableList()// 转换为MutableList<String> // 测试一下:现在wordList[0]就是"aaa"了 println(wordList[0]) // 输出:aaa }
⚠️ 注意:这个方法要求文件里的格式严格是[单词1, 单词2, 单词3...]——也就是单词之间必须是逗号加空格分隔,没有多余的引号或其他符号。如果格式有细微差别(比如逗号后没有空格),只需要调整分割逻辑,给每个元素做个修剪:
.split(",") .map { it.trim() } .toMutableList()
方法二:利用Kotlin脚本引擎(适合复杂格式)
如果文件内容是标准的Kotlin列表字面量,也可以用脚本引擎直接解析成List对象,不过需要额外配置依赖,适合格式不确定的场景:
import java.io.File import kotlin.script.experimental.api.EvaluationResult import kotlin.script.experimental.api.ScriptEvaluationConfiguration import kotlin.script.experimental.api.implicitReceivers import kotlin.script.experimental.host.toScriptSource import kotlin.script.experimental.jvm.JvmScriptCompiler import kotlin.script.experimental.jvmhost.BasicJvmScriptingHost fun main() { val fileContent = File("src/resources/words_threeLetters.txt").readText() val host = BasicJvmScriptingHost() val result = host.eval( fileContent.toScriptSource(), ScriptEvaluationConfiguration { implicitReceivers.add(this) } ) val wordList = (result as EvaluationResult.Success).returnValue as List<String> val mutableWordList = wordList.toMutableList() println(mutableWordList[0]) // 输出:aaa }
不过这个方法相对重,一般日常场景用方法一就足够了。
为什么你之前的尝试失败?
你之前直接把读取到的字符串赋值给mutableListOf<String>或者mutableListOf<Char>,本质是没有对这个类列表格式的文本进行解析——你只是把整个文本当成了单个元素(或者拆成了单个字符),而不是把里面的单词提取出来作为列表元素。
内容的提问来源于stack exchange,提问作者grahfly
相关产品推荐
相关产品推荐

