简化的方案如下.
(888) 555-5512)
到UITextField.该数字将在开头和结尾添加Unicode字符,就像\u{e2}(888) 555-5512\u{e2}
在调试时探索变量一样.
这真的很奇怪,在我看来,不是预期的行为.这是一个错误或某种故意以这种方式工作的东西吗?
码:
这里没什么复杂的.如前所述,全新的项目,添加UITextField,添加Button,如果按钮触发打印结果.打印将显示手机就好了,只需在线上设置断点print
并查看手机var的值,看看我的意思.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var phoneLabel: UITextField!
@IBAction func goButton(_ sender: UIButton) {
let text = phoneLabel.text ?? ""
print(text)
}
}
Run Code Online (Sandbox Code Playgroud)
测试中:
图像步骤:
这就是我在断点线上得到的.
lim*_*ity 19
我最近有同样的问题.有趣的是,您在调试器中看到的内容很遗憾不是实际粘贴的内容.如果您将号码复制到其他位置并使用控制台进行调查,例如,您将获得以下输出:
>>> 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'
Run Code Online (Sandbox Code Playgroud)
所以你可以看到它实际上是控制文本流的两个不同的不可见字符.
为了解决这个问题,我过滤掉了该cF
类别的所有unicode字符.所以你可以这样做:
phoneLabel.text?.replacingOccurrences(of: "\\p{Cf}", with: "", options: .regularExpression)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1261 次 |
最近记录: |