检查 Swift 文本字段是否包含非空格
Check if Swift text field contains non-whitespace
这是 How to check if a text field is empty or not in swift
的扩展,而不是重复
给出的答案,
@IBAction func Button(sender: AnyObject) {
if textField1.text != "" {
// textfield 1
}
}
对我不起作用,即即使在文本字段中未输入任何内容,if 循环也会被触发。 (我已经修改了原来的代码,因为我希望仅在字段包含文本时触发代码)。
第二个答案
@IBAction func Button(sender: AnyObject) {
if !textField1.text.isEmpty{
}
}
更接近,但它接受像 " "
这样的字符串不为空。我可以自己构建一些东西,但是是否有一个函数可以检查字符串是否包含空格以外的内容?
此答案最后针对 Swift 5.2 和 iOS 13.5 SDK 进行了修订。
您可以 trim 字符串中的空白字符并检查它是否为空:
if !textField1.text.trimmingCharacters(in: .whitespaces).isEmpty {
// string contains non-whitespace characters
}
您也可以使用 .whitespacesAndNewlines
删除换行符。
extension StringProtocol where Index == String.Index {
var isEmptyField: Bool {
return trimmingCharacters(in: .whitespaces) == ""
}
}
if yourTextField.text.isEmptyField {
// Field is empty
} else {
// Field is NOT empty
}
下面是我编写的扩展,效果很好,特别是对于那些来自 .NET 背景的人:
extension String {
func isEmptyOrWhitespace() -> Bool {
if(self.isEmpty) {
return true
}
return (self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) == "")
}
}
在 Swift 3.0:
let whitespaceSet = CharacterSet.whitespaces
if !str.trimmingCharacters(in: whitespaceSet).isEmpty {
// string contains non-whitespace characters
}
答案在 Swift 3.0
if stringValue.trimmingCharacters(in: CharacterSet.whitespaces).isEmpty
{}
在 Swift 3.* 中回答,考虑换行符、制表符
extension String {
var containsNonWhitespace: Bool {
return !self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
}
}
在 swift 4 中回答:
extension String {
func isEmptyOrWhitespace() -> Bool {
if(self.isEmpty) {
return true
}
return (self.trimmingCharacters(in: NSCharacterSet.whitespaces) == "")
}
}
Swift 4.2
字符串的扩展名是空的或空格
extension String {
func isEmptyOrWhitespace() -> Bool {
// Check empty string
if self.isEmpty {
return true
}
// Trim and check empty string
return (self.trimmingCharacters(in: .whitespaces) == "")
}
}
原始发布者的代码正在检查 text
可选的文本字段。所以他需要一些代码来检查可选字符串。因此,让我们也创建一个函数来处理它:
可选字符串的扩展名为 nil、空或空格
extension Optional where Wrapped == String {
func isEmptyOrWhitespace() -> Bool {
// Check nil
guard let this = self else { return true }
// Check empty string
if this.isEmpty {
return true
}
// Trim and check empty string
return (this.trimmingCharacters(in: .whitespaces) == "")
}
}
swift 4.2
@IBAction func checkSendButton(_ sender: UITextField) {
if((sender.text?.count)! > 0 && !(sender.text!.trimmingCharacters(in: .whitespaces)).isEmpty){
self.sendButton.isEnabled = true
}
else{
self.sendButton.isEnabled = false
}
}
如果您需要演示,请附上图片回答
// MY FUNCTIONS
private func checkMandatoryFields(){
//CHECK EMPTY OR SPACES ONLY FIELDS
if let type = typeOutle.text, let name = nameOutlet.text, let address = addressOutlet.text, type.trimmingCharacters(in: .whitespaces).isEmpty || name.trimmingCharacters(in: .whitespaces).isEmpty || address.trimmingCharacters(in: .whitespaces).isEmpty {
print("Mandatory fields are: ")
errorDisplay(error: "Mandatory fields are: Type, Name, Address.")
return
}
}
方法
func trim() -> String {
return self.trimmingCharacters(in: NSCharacterSet.whitespacesAndNewlines)
}
使用
if textField.text.trim().count == 0 {
// Do your stuff
}
这是 How to check if a text field is empty or not in swift
的扩展,而不是重复给出的答案,
@IBAction func Button(sender: AnyObject) {
if textField1.text != "" {
// textfield 1
}
}
对我不起作用,即即使在文本字段中未输入任何内容,if 循环也会被触发。 (我已经修改了原来的代码,因为我希望仅在字段包含文本时触发代码)。
第二个答案
@IBAction func Button(sender: AnyObject) {
if !textField1.text.isEmpty{
}
}
更接近,但它接受像 " "
这样的字符串不为空。我可以自己构建一些东西,但是是否有一个函数可以检查字符串是否包含空格以外的内容?
此答案最后针对 Swift 5.2 和 iOS 13.5 SDK 进行了修订。
您可以 trim 字符串中的空白字符并检查它是否为空:
if !textField1.text.trimmingCharacters(in: .whitespaces).isEmpty {
// string contains non-whitespace characters
}
您也可以使用 .whitespacesAndNewlines
删除换行符。
extension StringProtocol where Index == String.Index {
var isEmptyField: Bool {
return trimmingCharacters(in: .whitespaces) == ""
}
}
if yourTextField.text.isEmptyField {
// Field is empty
} else {
// Field is NOT empty
}
下面是我编写的扩展,效果很好,特别是对于那些来自 .NET 背景的人:
extension String {
func isEmptyOrWhitespace() -> Bool {
if(self.isEmpty) {
return true
}
return (self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) == "")
}
}
let whitespaceSet = CharacterSet.whitespaces
if !str.trimmingCharacters(in: whitespaceSet).isEmpty {
// string contains non-whitespace characters
}
答案在 Swift 3.0
if stringValue.trimmingCharacters(in: CharacterSet.whitespaces).isEmpty
{}
在 Swift 3.* 中回答,考虑换行符、制表符
extension String {
var containsNonWhitespace: Bool {
return !self.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty
}
}
在 swift 4 中回答:
extension String {
func isEmptyOrWhitespace() -> Bool {
if(self.isEmpty) {
return true
}
return (self.trimmingCharacters(in: NSCharacterSet.whitespaces) == "")
}
}
Swift 4.2
字符串的扩展名是空的或空格
extension String {
func isEmptyOrWhitespace() -> Bool {
// Check empty string
if self.isEmpty {
return true
}
// Trim and check empty string
return (self.trimmingCharacters(in: .whitespaces) == "")
}
}
原始发布者的代码正在检查 text
可选的文本字段。所以他需要一些代码来检查可选字符串。因此,让我们也创建一个函数来处理它:
可选字符串的扩展名为 nil、空或空格
extension Optional where Wrapped == String {
func isEmptyOrWhitespace() -> Bool {
// Check nil
guard let this = self else { return true }
// Check empty string
if this.isEmpty {
return true
}
// Trim and check empty string
return (this.trimmingCharacters(in: .whitespaces) == "")
}
}
swift 4.2
@IBAction func checkSendButton(_ sender: UITextField) {
if((sender.text?.count)! > 0 && !(sender.text!.trimmingCharacters(in: .whitespaces)).isEmpty){
self.sendButton.isEnabled = true
}
else{
self.sendButton.isEnabled = false
}
}
如果您需要演示,请附上图片回答
// MY FUNCTIONS
private func checkMandatoryFields(){
//CHECK EMPTY OR SPACES ONLY FIELDS
if let type = typeOutle.text, let name = nameOutlet.text, let address = addressOutlet.text, type.trimmingCharacters(in: .whitespaces).isEmpty || name.trimmingCharacters(in: .whitespaces).isEmpty || address.trimmingCharacters(in: .whitespaces).isEmpty {
print("Mandatory fields are: ")
errorDisplay(error: "Mandatory fields are: Type, Name, Address.")
return
}
}
方法
func trim() -> String {
return self.trimmingCharacters(in: NSCharacterSet.whitespacesAndNewlines)
}
使用
if textField.text.trim().count == 0 {
// Do your stuff
}