我试图让用户输入一个班级编号和名称,以提取关于我在文件中拥有的该班级的信息列表。我已经弄清楚了如何使用.toRegex匹配信息。我不知道如何使用用户输入来找到他们需要的匹配,而不是文件中的所有匹配。我对Regnex非常陌生。
val pattern = """\d+\s+([A-Z]+).\s+(\d+)\s.+\s+\w.+""".toRegex()
val fileName = "src/main/kotlin/Enrollment.txt"
var lines = File(fileName).readLines()// reads every line on the file
do{
print("please enter class name")
var className = readLine()!!
print("please enter class number ")
var classNum = readLine()!!
for(i in 0..(lines.size-1) ){
var matchResult = pattern.find(lines[i])
if(matchResult != null) {
var (className,classNum) = matchResult.groupValues
println("className: $className, class number: $classNum ")
}
}
}while (readLine()!! != "EXIT") ```
example line from file
Name Num
0669 HELP 134 AN CV THING ETC 4.0 4.0 Smith P 001 0173 MTWTh 9:30A 10:30A 23 15 8 4.0
您需要在从用户获得的模式中使用一个变量。readLine()使用循环检查每一行,并使用另一个循环检查模式是否在该行中。pattern.containMatchIn()
val className = readLine()!!.toUpperCase()
print("please enter class number ")
val classNum = readLine()!!
val pattern = """\s+\d+\s+$className.\s+$classNum""".toRegex()
for(i in 0..(lines.size-1) ) {
var matchResult = pattern.find(lines[i])
if(matchResult != null ){
if (pattern.containsMatchIn(lines[i])) {
println(lines[i])
}
}
}```
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句