我开始学习Scala,并希望使用正则表达式来匹配字符串中的字符,因此我可以填充可变的字符映射及其字符值(字符串值,数字等,然后打印结果。)>
我在SO上查看了几个答案,并遍历了Scala Docs,但似乎无法正确地做到这一点。我有一个短的Lexer类,当前看起来像这样:
class Lexer { private val tokens: mutable.Map[String, Any] = collection.mutable.Map() private def checkCharacter(char: Character): Unit = { val Operator = "[-+*/^%=()]".r val Digit = "[\\d]".r val Other = "[^\\d][^-+*/^%=()]".r char.toString match { case Operator(c) => tokens(c) = "Operator" case Digit(c) => tokens(c) = Integer.parseInt(c) case Other(c) => tokens(c) = "Other" // Temp value, write function for this } } def lex(input: String): Unit = { val inputArray = input.toArray for (s <- inputArray) checkCharacter(s) for((key, value) <- tokens) println(key + ": " + value) } }
我对某种奇怪的方法语法Operator(c)感到困惑,因为我已经看到它被用来处理要匹配的值,并且也不确定这是否是在Scala中使用正则表达式的正确方法。我想我要这段代码做的很清楚,我真的很感谢能帮助理解这一点。如果需要更多信息,我将尽力提供
我开始学习Scala,并希望使用正则表达式来匹配字符串中的字符,因此我可以填充可变的字符映射及其字符值(字符串值,数字等),然后...