我使用Scala 2.12.2 Java 1.8.0_121
编写了这段代码import scala.util.Random
def randomString(length: Int) : String = {
Random.alphanumeric.dropWhile(_.isDigit).take(length).mkString
}
当我运行这个
时randomString(10)
我得到了输出
"UfuoB8POL5"
我对此感到困惑并且无法理解为什么像8和5这样的数字使它成为函数的最终输出?它应该被过滤掉了。
答案 0 :(得分:3)
这是因为您应该使用spark_read_parquet
而不是$('#vm1').text('la2');
。要在一个简单的例子中证明它们的区别:
filterNot
换句话说,dropWhile
只删除不满足谓词的前缀,而"123abc456def".dropWhile(_.isDigit) // results into "abc456def"
"123abc456def".filterNot(_.isDigit) // results into "abcdef"
删除所有不满足谓词的元素。
答案 1 :(得分:1)
您应该使用retType
功能
filterNot
当条件为真时, Random.alphanumeric.filterNot(_.isDigit).take(length).mkString
跳过序列元素。想象一下,你的序列是dropWhile
。它将跳过Seq("1", "2", "a", "3")
并返回休息。
答案 2 :(得分:0)
Random.alphanumeric.dropWhile(_.isDigit).take(length).mkString
字母数字表示生成字符串时将使用数字和字母。您需要“过滤”数字。
应该是:
Random.alphanumeric.filterNot(_.isDigit).take(length).mkString