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