首先,我是斯卡拉新手。斯卡拉 - replaceAllIn
我想在Scala中製作一個模板解析器(類似於Smarty(PHP))。它需要搜索文檔,將「{{}}」標籤內的任何內容替換爲HashMap中提供的任何內容。
我目前堅持在這裏:
import scala.collection.mutable.HashMap
import scala.io.Source
class Template(filename: String, vars: HashMap[Symbol, Any]) {
def parse() = {
var contents = Source.fromFile(filename, "ASCII").mkString
var rule = """\{\{(.*)\}\}""".r
//for(rule(v) <- rule findAllIn contents) {
// yield v
//}
//rule.replaceAllIn(contents,)
}
}
var t = new Template("FILENAME", new HashMap[Symbol, Any])
println(t.parse)
的一部分,我的評論是我想過做事情的。
感謝
我來遠一點......
import scala.collection.mutable.HashMap
import scala.io.Source
import java.util.regex.Pattern
import java.util.regex.Matcher
class Template(filename: String, vars: HashMap[Symbol, Any]) {
def findAndReplace(m: Matcher)(callback: String => String):String = {
val sb = new StringBuffer
while (m.find) {
m.appendReplacement(sb, callback(m.group(1)))
}
m.appendTail(sb)
sb.toString
}
def parse() = {
var contents = Source.fromFile(filename, "ASCII").mkString
val m = Pattern.compile("""\{\{(.*)\}\}""").matcher(contents)
findAndReplace(m){ x => x }
}
}
var t = new Template("FILENAME.html", new HashMap[Symbol, Any])
println(t.parse)
在它只是目前增加的那一刻無論是在標籤內,迴文檔。我想知道是否有更簡單的方法在Scala中查找和替換樣式正則表達式?
對不起 - 什麼是你的問題? – 2009-06-11 00:09:26