How can I check if a String (for example "apple") contains text that I typed in a UITextField (for example "p" or "pp").
If the String contains the UITextField's text, I want to print a message - for example: "apple contains pp".
Asked
Active
Viewed 5,285 times
3
Marcus Rossel
- 3,196
- 1
- 26
- 41
NoNameL
- 41
- 1
- 6
-
1Try this http://stackoverflow.com/questions/24034043/how-do-i-check-if-a-string-contains-another-string-in-swift – Pet Rat Jun 19 '16 at 13:42
2 Answers
3
You can achieve that like so
class youClass: NSObject {
var yourTextFieldName = UITextField()
func someMethod() {
var apple = "apple"
if apple.containsString(self.yourTextfieldName.text!) {
print("apple contains \(self.yourTextfieldName.text!)")
}
}
}
Akshansh Thakur
- 5,163
- 2
- 21
- 38
0
You could extend String:
extension String {
@discardableResult
func containsText(of textField: UITextField) -> Bool {
// Precondition
guard let text = textField.text else { return false }
let isContained = self.contains(text)
if isContained { print("\(self) contains \(text)") }
return isContained
}
}
Instead of just printing a result, it also returns a Bool indicating whether or not the textField's text was contained in the String. The @discardableResult attribute allows you to ignore the return value if you want to though, without generating a compiler warning.
You could also take a reversed approach, by extending UITextField:
extension UITextField {
@discardableResult
func textIsContained(in target: String) -> Bool {
// Precondition
guard let text = self.text else { return false }
let isContained = target.contains(text)
if isContained { print("\(target) contains \(text)") }
return isContained
}
}
You would use these methods as follows:
// Your `UITextField`
let textField = UITextField()
textField.text = "pp"
// String extension:
"apple".containsText(of: textField) // returns `true` and prints "apple contains pp"
// UITextField extension:
textField.textIsContained(in: "apple") // returns `true` and prints "apple contains pp"
Marcus Rossel
- 3,196
- 1
- 26
- 41