栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在输入文本字段时在文本字段字符之间添加空格

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在输入文本字段时在文本字段字符之间添加空格

我们可以从实现oisdk:s SwiftSequence

chunk(n:)
方法的(版本号)的Swift
3版本开始:
Collection

extension Collection {    public func chunk(n: IndexDistance) -> [SubSequence] {        var res: [SubSequence] = []        var i = startIndex        var j: Index        while i != endIndex { j = index(i, offsetBy: n, limitedBy: endIndex) ?? endIndex res.append(self[i..<j]) i = j        }        return res    }}

在这种情况下,实现自定义格式是创建4个字符的块并将其通过“-”连接的简单情况:

func customStringFormatting(of str: String) -> String {    return str.characters.chunk(n: 4)        .map{ String($0) }.joined(separator: "-")}

用法示例:

print(customStringFormatting(of: "5022222222222222")) // 5022-2222-2222-2222print(customStringFormatting(of: "50222222222222"))   // 5022-2222-2222-22print(customStringFormatting(of: "5022222"))          // 5022-222

如果适用于的

textField(_:shouldChangeCharactersIn:replacementString:)
方法
UITextFieldDelegate
,我们可能希望过滤掉
customStringFormatting(of:)
方法中的现有分隔符,并将其实现为
String
扩展:

extension String {    func chunkFormatted(withChunkSize chunkSize: Int = 4,         withSeparator separator: Character = "-") -> String {        return characters.filter { $0 != separator }.chunk(n: chunkSize) .map{ String($0) }.joined(separator: String(separator))    }}

并实现文本字段的受控更新,例如,如下所示:

let maxNumberOfCharacters = 16func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {    // only allow numerical characters    guard string.characters.flatMap({ Int(String($0)) }).count ==        string.characters.count else { return false }    let text = textField.text ?? ""    if string.characters.count == 0 {        textField.text = String(text.characters.dropLast()).chunkFormatted()    }    else {        let newText = String((text + string).characters .filter({ $0 != "-" }).prefix(maxNumberOfCharacters))        textField.text = newText.chunkFormatted()    }    return false}

上面的最后一部分将截断用户可能粘贴的字符串(假定它们都是数字的),例如

// current 1234-1234-123// user paste:777777777  // will result in1234-1234-1237-7777


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427007.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号