标题听起来有点疯狂,但在Scala("a" * 3 = "aaa"
)中有java.lang.String的*函数,为什么我们没有/ "aaa" / "a" = 3
?
干杯
伯尔萨
答案 0 :(得分:6)
我喜欢这个想法。我将回答一个问题:为什么不存在 - 当我们有+函数时功能?
implicit def strDivider(s:String) = new {
def /(q:String): Int = s.grouped(q.length).takeWhile(_ == q).size
}
scala> "aaa" / "a"
res0: Int = 3
scala> "abc" / "x"
res1: Int = 0
scala> "aaa" / "aa"
res2: Int = 1
答案 1 :(得分:2)
这样的操作似乎有点奇怪。划分"abc" / "x"
是什么意思? String.split()
函数似乎更通用,更实用。
答案 2 :(得分:2)
您还可以将String
除以Int
s:
def divide(s: String, i: Int): (String,String) = {
require(i>0)
val Pattern = ("(.+)" + """\1""" * i + "(.*)").r
val Pattern(q, r) = s
(q,r)
}
assert(divide("aaa", 3) == ("a", ""))
assert(divide("aaaa", 3) == ("a", "a"))
assert(divide("abababc", 3) == ("ab", "c"))
assert(divide("abc", 1) == ("abc", ""))
assert(divide("foobar", 3) == ("", "foobar"))
答案 3 :(得分:0)
像"a" * 3
这样的构造用于在将输出打印到stdout时创建分隔符,因此您可以执行"-" * 72
而不是在一行上键入72个连字符。我不认为你可以通过划分获得什么好处。