代码之家  ›  专栏  ›  技术社区  ›  zitherC

Swift | |我们能检测出空字符串有多少空格吗?

  •  0
  • zitherC  · 技术社区  · 3 年前

    假设我们有一个字符串的扩展:

    extension String {
      var textBeCleared: Bool {
       // how we write here
      }
    }
    

    然后:

    var demo1 = ""  // no space over here
    demo.textBeCleared // true
    var demo2 = " " // type one space over here
    demo.textBeCleared // false
    

    因为我遇到了一个棘手的问题:我在文本字段底部有一个save按钮,save按钮仅在删除文本字段中的所有文本内容时显示,如demo1。但如果在这里输入更多的空间,比如demo2,保存按钮将被隐藏。

    3 回复  |  直到 3 年前
        1
  •  0
  •   workingdog support Ukraine    3 年前

    你可以试试这个:

    extension String {
      var textBeCleared: Bool {
          self.isEmpty
      }
    }
    
    var demo1 = ""  // no space over here
    var demo2 = " " // type one space over here
    print(" demo1.textBeCleared: \(demo1.textBeCleared) ") // true
    print(" demo2.textBeCleared: \(demo2.textBeCleared) ") // false
    
        2
  •  0
  •   Ashis Laha    3 年前

    使用者 滤器 为此目的。它将过滤字符串中的每个字符,您将得到预期的结果。

    let inputString1 = "   "
    let inputString2 = ""
    let inputString3 = "a"
    let spacesCount1 = inputString1.filter { $0 == " " }
    print(spacesCount1.count)
    let spacesCount2 = inputString2.filter { $0 == " " }
    print(spacesCount2.count)
    let spacesCount3 = inputString3.filter { $0 == " " }
    print(spacesCount3.count)
    

    输出

    3
    0
    0
    
        3
  •  0
  •   zitherC    3 年前

    谢谢大家,我通过以下代码解决了这个问题

    let inputString1 = "   "
    let inputString2 = ""
    let inputString3 = "a"
    
    
    extension String {
        var textBeCleared: Bool {
            !self.contains(" ") && allSatisfy { $0.isWhitespace }
        }
    }
    inputString1.textBeCleared // false
    inputString2.textBeCleared // true
    inputString3.textBeCleared // false