我想说我要转换包含字符和整数的以下列表:
List(1,2,3,'-',' ').map(a => something(a.toChar))
某些方法的东西。现在a.toChar将成为一个角色,但不喜欢' 1',' 2'和'。同样,整数的技巧也不会对角色起作用。有谁知道如何解决这个问题?
答案 0 :(得分:1)
Scala认为此List(1,2,3,'-',' ')
为List[Int]
,其中' '
等元素只是表达整数值32的不同方式。
如果要将此List[Int]
更改为List[Char]
,保留当前字符表示形式但将所有单个数字整数值表示为等效的ASCII字符,则可以执行以下操作。
List(1,2,3,'-',' ').map(x => if (x <= 9) (x+48).toChar else x.toChar)
// res0: List[Char] = List(1, 2, 3, -, )
但您仍然可能遇到不可打印字符的Int
值。最好完全避免使用这些混合类型的集合。
答案 1 :(得分:0)
将范围内的整数转换为char,方法是将其转换为中间字符串并获取第0个索引字符。
如果有效字节将其转换为char。
如果任何其他整数或对象在模式匹配中具有大小写并转换为适当的结果。
scala> List(1,2,3,'-',' ').map {
| case a if a >= 0 && a <= 9 => s"$a"(0)
| case b if b.isValidByte => b.toByte.toChar
| }
res19: List[Char] = List(1, 2, 3, -, )