The simplified scenario is the following.
- New project using Single View App template.
- Add a UITextField to the ViewController.
- Run the app and copy and paste a Contacts phone number [ej. John Appleseed one
(888) 555-5512)] to the UITextField.
The number will be added with a Unicode character at the beginning and at the end, getting like \u{e2}(888) 555-5512\u{e2} when exploring the variable while debugging.
This is really weird and in my opinion, not the intended behaviour. Is this a bug or something that works intentionally this way?
Code:
Nothing complicated here. As described before, brand new project, add UITextField, add Button, and if button triggered print the result.
The print will show the phone just fine, just put a breakpoint in the print line and see the value of the phone var to see what I mean.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var phoneLabel: UITextField!
@IBAction func goButton(_ sender: UIButton) {
let text = phoneLabel.text ?? ""
print(text)
}
}
Tested in:
- iOS 11.1 - iPhone X
- Xcode 9.1
Steps with images:
This is what I got at the breakpoint line.
15
I had exactly the same issue recently. Interestingly enough what you see in the debugger is unfortunately not what is actually pasted. If you copy the number to a different place and investigate it with your console for example you will get the following output:
>>> u"\U+202D(888) 5555-5512\U+202C"
u'\u202d(888) 5555-5512\u202c'
>>> name(u"\U+202D")
'LEFT-TO-RIGHT OVERRIDE'
>>> name(u"\U+202C")
'POP DIRECTIONAL FORMATTING'
So as you can see it is really two different invisible characters controlling the flow of the text.
In order to solve that I filtered out all unicode characters of the cF category. So you could do:
phoneLabel.text?.replacingOccurrences(of: "\\p{Cf}", with: "", options: .regularExpression)
3 Comments
BTW, there is online converters to see unicode codes of chars (including hidden) in string. For example: r12a.github.io/app-conversion
Explore related questions
See similar questions with these tags.




