如何比较空白字符

时间:2017-11-15 09:19:25

标签: ios swift

我需要检查一个角色是否是一个空格,你是怎么做到的?

for (index, val) in (self.textField.text?.enumerated())! {
  if val == " " { // How?
    if index % 2 == 0 {
      // ...
    }
  }
}

4 个答案:

答案 0 :(得分:1)

在Swift中,您可以直接遍历String

   let phrase = "Hello, This is Test String."
        for chr in phrase {
            if chr == " " {
                print("White space")
            }
        }

答案 1 :(得分:1)

取决于您正在寻找的空间的类型。对于"正常"空格(0x20)你的代码应该工作。但它不会评价为true以及#34;特殊"空格。

给定以下字符串,其中包含不同类型的空格

let myString = "This\u{0020}text contains normal spaces\u{00a0}and\u{00a0}non-breaking\u{00a0}ones"

" "比较将导致发现4次事件

let result1 = myString.enumerated().filter { $0.element == " " }

print(result1)
/* 
   [(offset: 4, element: " "), 
    (offset: 9, element: " "), 
    (offset: 18, element: " "), 
    (offset: 25, element: " ")] 
*/

但您也可以使用空白字符集。 请注意:对于其他空白类型(例如换行符,制表符),这也将评估为true。

let result2 = myString.unicodeScalars.enumerated().filter { 
                  CharacterSet.whitespaces.contains($0.element) 
              }

print(result2)
/*
    [(offset: 4, element: " "), 
     (offset: 9, element: " "), 
     (offset: 18, element: " "), 
     (offset: 25, element: " "), 
     (offset: 32, element: "\u{00A0}"), 
     (offset: 36, element: "\u{00A0}"), 
     (offset: 49, element: "\u{00A0}")]
*/

答案 2 :(得分:0)

使用NSCharacterSet检查空格,包括\ n,\ t等

NSCharacterSet.whitespaces.contains(val.unicodeScalars.first!)

答案 3 :(得分:0)

最简单的方法

var str : String = textField.stringValue
for i in 0...str.count-1{
    var spaceChr : Character = str.removeFirst() //init
    if spaceChr == " " { //doit}
}