当字符串满足以下条件时,我们定义它是“按字母顺序增长的”:
- 每个字母都比前一个字母大。
- 无论字母是否大写都没有关系。
下列字符串是“按字母顺序增长的”:
- "abcde"
- "aBfJz"
而这些则不是:
- "abbcd"
- "abdDz"
- "zba"
假设我们正在检查仅包含字母的字符串。 在Scala中,可以使用以下代码来检查字符串是否“增长”:
val str = "aBgjz"
val growing = str.map(_.toLower).toSet.toList.sortWith( _ < _ ).mkString.equals(str.map(_.toLower))
这段代码对于英文字母来说运行良好,但对于带有波兰字母的字符串,结果是错误的。在波兰字母表中,字母的顺序如下:
a, ą, b, c, ć, d, e ...
因此,对于以下内容:
val str = "aąbćdgz"
结果应该是“true”。所以问题是:
如何在Scala中检查给定字符串是否在给定语言环境下“按字母顺序增长”?
val str = "aąbćdgz"
val locale_id = "pl_PL"
....
val growing = ......