为什么我的函数用数字生成字符串?

时间:2017-07-21 17:28:45

标签: scala

我使用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这样的数字使它成为函数的最终输出?它应该被过滤掉了。

3 个答案:

答案 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