sam*_*sam 49 string split scala character character-encoding
例如,有一个字符串val s = "Test".你怎么把它分成t, e, s, t?
Rex*_*err 61
你需要角色吗?
"Test".toList // Makes a list of characters
"Test".toArray // Makes an array of characters
Run Code Online (Sandbox Code Playgroud)
你需要字节吗?
"Test".getBytes // Java provides this
Run Code Online (Sandbox Code Playgroud)
你需要字符串吗?
"Test".map(_.toString) // Vector of strings
"Test".sliding(1).toList // List of strings
"Test".sliding(1).toArray // Array of strings
Run Code Online (Sandbox Code Playgroud)
你需要UTF-32代码点吗?好的,那是一个更难的.
def UTF32point(s: String, idx: Int = 0, found: List[Int] = Nil): List[Int] = {
if (idx >= s.length) found.reverse
else {
val point = s.codePointAt(idx)
UTF32point(s, idx + java.lang.Character.charCount(point), point :: found)
}
}
UTF32point("Test")
Run Code Online (Sandbox Code Playgroud)
aio*_*obe 53
您可以使用toList如下:
scala> s.toList
res1: List[Char] = List(T, e, s, t)
Run Code Online (Sandbox Code Playgroud)
如果你想要一个数组,你可以使用 toArray
scala> s.toArray
res2: Array[Char] = Array(T, e, s, t)
Run Code Online (Sandbox Code Playgroud)
实际上你不需要做任何特别的事情.已经隐式转换Predef为WrappedString和WrappedString扩展,IndexedSeq[Char]因此您可以使用其中的所有好东西,例如:
"Test" foreach println
"Test" map (_ + "!")
Run Code Online (Sandbox Code Playgroud)
Predef具有augmentString比wrapString在中具有更高优先级的转换LowPriorityImplicits.所以字符串最终存在StringLike[String],也Seq就是字符.
另外,应该注意的是,如果你真正想要的不是一个真正的列表对象,而只是为每个字符做一些事情,那么Strings可以用作Scala中可迭代的字符集合
for(ch<-"Test") println("_" + ch + "_") //prints each letter on a different line, surrounded by underscores
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44634 次 |
| 最近记录: |