Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Scala:检测字符串中的西里尔和拉丁字符?_String_Scala - Fatal编程技术网

String Scala:检测字符串中的西里尔和拉丁字符?

String Scala:检测字符串中的西里尔和拉丁字符?,string,scala,String,Scala,请使用简单的Scala方法提供帮助,该方法允许: 检测字符串是否至少包含一个拉丁字符 检测是否所有字符串都是拉丁字符 检测字符串是否至少包含一个西里尔字符 检测是否所有字符串都是西里尔字母 到目前为止,我试过: scala> val pattern = new Regex("[a-zA-Z]") pattern: scala.util.matching.Regex = [a-zA-Z] scala> val s = "john" s: String = john scala>

请使用简单的Scala方法提供帮助,该方法允许:

  • 检测字符串是否至少包含一个拉丁字符
  • 检测是否所有字符串都是拉丁字符
  • 检测字符串是否至少包含一个西里尔字符
  • 检测是否所有字符串都是西里尔字母
  • 到目前为止,我试过:

    scala> val pattern = new Regex("[a-zA-Z]")
    pattern: scala.util.matching.Regex = [a-zA-Z]
    scala> val s = "john"
    s: String = john
    scala> pattern findFirstIn s
    res22: Option[String] = Some(j)
    
    谢谢

    给你

    1。一个拉丁字符

    scala> ("[A-Za-z]".r findFirstIn "Munich").isDefined
    res22: Boolean = true
    
    scala> "Munich".toList.forall(c => ( c >= 'A' && c<= 'Z') || (c >= 'a' && c <= 'z') )
    res27: Boolean = true
    
    2。所有拉丁字符

    scala> ("[A-Za-z]".r findFirstIn "Munich").isDefined
    res22: Boolean = true
    
    scala> "Munich".toList.forall(c => ( c >= 'A' && c<= 'Z') || (c >= 'a' && c <= 'z') )
    res27: Boolean = true
    
    4。所有字符都是西里尔语:

    ("\\p{IsCyrillic}".r findFirstIn "Москва").isDefined
    res5: Boolean = true
    
    val moscow = "Москва"
    
    "\\p{IsCyrillic}*".r.findFirstIn(moscow).map(_.size) == Some(moscow.size)
    res21: Boolean = true
    

    你能至少展示一下到目前为止你已经尝试了什么吗?请看我的问题更新你对“拉丁语”的定义是什么?A-Za-z似乎在4)中受限
    findFirstIn
    只查找一个字符,大小始终为1。否。试试代码,4有点不同。有一个Kleene星“*”。很抱歉,我不会说使用西里尔字母的语言,但西里尔字母似乎测试西里尔字母(西里尔字母块中的任何字符),而拉丁字母测试测试拉丁字母(不包括拉丁字母块中的其他非字母字符)。因此,测试是不对称的?