【问题标题】:Check if a character is lowerCase or upperCase检查一个字符是小写还是大写
【发布时间】:2015-04-23 17:17:52
【问题描述】:

我正在尝试制作一个将字符串存储在名为input 的变量中的程序。

使用这个input 变量,然后我尝试将其转换为数组,然后使用for 循环测试数组中的每个字符是否为小写。我怎样才能做到这一点?

这是我已经走了多远:

var input = "The quick BroWn fOX jumpS Over tHe lazY DOg"

var inputArray = Array(input)

for character in inputArray {
    /*

    if character is lower case {

        make it uppercase

    } else {

        make it lowercase

    }

    */
}

【问题讨论】:

  • 我已作为副本关闭,因为您的实际意图似乎是交换案例(无论如何,您可以使用该问题的答案中的方法)。 – 如果我完全错了,请告诉我,然后我将重新提出问题。
  • 这不是重复的。我在上面写过,我检查了其他帖子,但找不到问题。我不想要一个使用函数的答案。请重新打开问题。 @MartinR
  • 也许您可以解释为什么Swap string case - swift 的各种答案对您不起作用。您不必使用函数,只需使用这些函数中的代码即可。 – 我仍然认为这是重复的,但我已经重新提出了任何人都可以参与的问题。

标签: swift lowercase


【解决方案1】:

斯威夫特 3

static func isLowercase(string: String) -> Bool {
    let set = CharacterSet.lowercaseLetters

    if let scala = UnicodeScalar(string) {
      return set.contains(scala)
    } else {
      return false
    }
  }

【讨论】:

    【解决方案2】:
     var input = "The quick BroWn fOX jumpS Over tHe lazY DOg"
    
     var inputArray = Array(input)
    
     for character in inputArray {
    
     var strLower = "[a-z]";
    
     var strChar = NSString(format: "%c",character )
     let strTest = NSPredicate(format:"SELF MATCHES %@", strLower );
     if strTest .evaluateWithObject(strChar)
     {
       // lower character
     }
     else
     {
       // upper character
     }
    }
    

    【讨论】:

      【解决方案3】:

      斯威夫特 4:

      var input = "The quick BroWn fOX jumpS Over tHe lazY DOg"
      let uppers = CharacterSet.uppercaseLetters
      let lowers = CharacterSet.lowercaseLetters
      input.unicodeScalars.forEach {
          if uppers.contains($0) {
              print("upper: \($0)")
          } else if lowers.contains($0) {
              print("lower: \($0)")
          }
      }
      

      【讨论】:

      • 安德鲁如何检查“空格”?
      • @DarkHorse 你可以试试 CharacterSet.whitespacesAndNewlines 如果合适的话
      • 谢谢,Andrew Tetlaw 正在工作。它对我来说很酷的解决方案
      【解决方案4】:

      如果必须,我可能会编写如下代码:

      extension Character {
          func isMember(of set: CharacterSet) -> Bool {
              guard let scalar = UnicodeScalar(String(self)) else { return false }
              return set.contains(scalar)
          }
          var isUppercase: Bool {
              return isMember(of: .uppercaseLetters)
          }
          // var isLowercase, isWhitespace, etc.
      }
      
      let result = "The quick BroWn fOX jumpS Over tHe lazY DOg"
          .map { $0.isUppercase ? String($0).lowercased() : String($0).uppercased() }
          .joined()
      print(result)
      
      // "tHE QUICK bROwN Fox JUMPs oVER ThE LAZy doG"
      

      【讨论】:

        【解决方案5】:

        您应该使用正则表达式:grep [A-Z] 与 grep [a-z]。

        【讨论】:

        • 查看我对乔的回答的评论。
        • 这是有效的,我假设 OP 谈论默认拉丁字母
        • 我询问了默认拉丁字母。但是你能告诉我如何在我的代码中使用它吗?
        【解决方案6】:

        这是一个写在 Swift 4 上的答案,无论输入字符串是单个还是多个字母都可以使用:

          extension String {
              static func isLowercase(string: String) -> Bool {
                  let set = CharacterSet.lowercaseLetters
                  for character in string {
                      if let scala = UnicodeScalar(String(character)) {
                          if !set.contains(scala) {
                              return false
                          }
                      }
                  }
                  return true
              }
        
              static func isUppercase(string: String) -> Bool {
                  let set = CharacterSet.uppercaseLetters
                  for character in string {
                      if let scala = UnicodeScalar(String(character)) {
                          if !set.contains(scala) {
                              return false
                          }
                      }
                  }
                  return true
              }
          }
        

        【讨论】:

          【解决方案7】:

          您可以检查每个字符的ascii值,因为大写和小写是不同的值,因为大写是65-90,小写是97-122

          【讨论】:

          • “Ü”、“Ă”、“ć”、“Œ”或“Α”(最后一个是大写的希腊字母)呢?
          • 从他的代码看来他不会遇到它们。
          • Joe,你能告诉我如何在我的代码中使用它吗?
          • if(char > 65 && char
          • @Joe: Swift Character 不是整数类型,不能与< someInt 比较。
          猜你喜欢
          • 1970-01-01
          • 2018-06-17
          • 2012-01-03
          • 2014-02-12
          • 2020-10-21
          • 2011-09-15
          • 2019-04-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多