因此,我试图从文件中读取转义字符,由于进行了大量清理,这是一个漫长而复杂的过程,但这并不重要。最终产品就是对象的此属性-
props.inputSeperator: String type
现在这是一个STRING。但是,在此特定情况下,此字符串的值为\u0001
当我打印此文件时,输出为\u0001
。字符串props.inputSeperator
的长度为6。如何将该字符串转换为单个字符的字符串?这将是\u0001
表示的特殊字符,因此字符串的长度将为1,并且在打印时将打印单个特殊字符(\u0001
)
val x: String = "\u0001"
val s = Array("\\", "u", "0", "0", "0", "1").mkString("")
println(x) //prints "?" this is a SINGLE special character
println(s) //prints "\u0001"
我想取s,并使其实质上成为x的值。
答案 0 :(得分:2)
只需使用Requested
中的方法unescapeJava
:
commons.text.StringEscapeUtils
示例:
libraryDependencies += "org.apache.commons" % "commons-text" % "1.4"
打印:
println(org.apache.commons.text.StringEscapeUtils.unescapeJava("\\u046C"))
答案 1 :(得分:2)
将不需要的字符剥离,解析十六进制字符串,然后变成Char
。
Integer.parseInt("\\u0A6E".drop(2), 16).toChar
res0: Char = ੮
答案 2 :(得分:0)
您在ascii文字中具有UNICODE值。要获取unicode值,您只需忽略“ \”和“ u”,并使用slide(2,2)格式将字符串的其余部分读取为十六进制值。然后通过指定所需的编码(即UNICODE)将结果字符串传递给“新字符串”。
scala> val ar = Array("\\", "u", "0", "0", "0", "1").mkString("")
ar: String = \u0001
scala> val x = new String( ar.drop(2).sliding(2,2).toArray.map(Integer.parseInt(_, 16).toByte) , "UNICODE")
x: String = ?
scala> x.length
res53: Int = 1
scala> x.toArray.map(_.toByte)
res54: Array[Byte] = Array(1)
scala>
验证:
scala> val x1: String = "\u0001"
x1: String = ?
scala> x==x1
res55: Boolean = true
scala>