【发布时间】:2015-07-05 02:55:49
【问题描述】:
我在下面编写了以下 Scala 代码来处理我传入的字符串,格式化字符串,将其附加到 StringBuilder 并将带有转义 unicode 的格式化 String 返回给我的调用者以进行其他处理。
Scala 编译器在 String.format 调用的行中抱怨以下错误:
带有替代方法的重载方法值格式:
(x$1; java.util.Locale; x$2: String, X$3: Object*)(x$1:String,x$2: Object*)字符串不能应用于(*String, Int)
class TestClass {
private def escapeUnicodeStuff(input: String): String = {
//type StringBuilder = scala.collection.mutable.StringBuilder
val sb = new StringBuilder()
val cPtArray = toCodePointArray(input) //this method call returns an Array[Int]
val len = cPtArray.length
for (i <- 0 until len) {
if (cPtArray(i) > 65535) {
val hi = (cPtArray(i) - 0x10000) / 0x400 + 0xD800
val lo = (cPtArray(i) - 0x10000) % 0x400 + 0xDC00
sb.append(String.format("\\u%04x\\u%04x", hi, lo)) //**complains here**
} else if (codePointArray(i) > 127) {
sb.append(String.format("\\u%04x", codePointArray(i))) //**complains here**
} else {
sb.append(String.format("%c", codePointArray(i))) //**complains here**
}
}
sb.toString
}
}
我该如何解决这个问题?如何清理代码以实现格式化字符串的目的?在此先感谢 Scala 专家
【问题讨论】:
-
再次感谢您的编辑。这个问题看起来好多了。
标签: string scala unicode stringbuilder