NSStringMask
这个小库是为了帮助您将掩码和格式应用到字符串。
例如,假设您有一个字符串 12345678
,并想要将其格式化为社会安全号码(正则表达式模式为 \d{3}-\d{2}-\d{3}
)。使用 NSStringMask,您只需执行 [NSStringMask maskString:@"12345678" withPattern:@"(\\d{3})-(\\d{2})-(\\d{3})"]
即可,结果将是 "123-45-678"。不是很简单吗?
安装
您可以克隆仓库并将 Classes
文件夹复制到您的项目中,或者通过 cocoa pods 进行安装。
pod "NSStringMask"
引用
请查看完整的文档 >。
请注意,这仍然处于开发中,可能不稳定。意见和建议始终欢迎,尤其是测试方面,这并非我的强项。
我将尽量保持 master
分支具有最稳定的更新,即使在部署新功能之前。
我还创建了一个 gist,其中包含一些常用的模式。请随时改进它!
使用示例
每次设置字符串模式或正则表达式时,都必须至少有一个捕获括号[分组]
。这是因为类认为括号内的所有内容都是必须匹配和替换的字符串。如果需要在格式中明确使用括号,请使用斜杠转义。
[NSStringMask maskString:@"c" withPattern:@"\\w"]
// result: nil
[NSStringMask maskString:@"c" withPattern:@"(\\w)"]
// result: "c"
[NSStringMask maskString:@"3" withPattern:@"\\((\\d)\\)"]
// result: (3)
[NSStringMask maskString:@"3" withPattern:@"\\((\\d{4})\\)" placeholder:@"_"]
// result: (3___)
以下是一些使用NSStringMask的形式之一
简单模式
在这种情况下,方法只能在提供的字符串长度等于或长于预期时返回预期结果仅此而已
[NSStringMask maskString:@"1234567890" withPattern:@"(\\d{3})-(\\d{3})-(\\d{4})"]
// result: 123-456-7890
如果字符串较短,则方法不会应用格式,而会返回一个带有有效字符的清理过的字符串
[NSStringMask maskString:@"123foo456" withPattern:@"(\\d{3})#(\\d{4})]
// result: 123456
带有占位符的模式
占位符允许您使用字符填充小于预期的字符串以完成格式化
[NSStringMask maskString:@"" withPattern:@"(\\d{2})/(\\d{2})/(\\d{4})" placeholder:@"_"]
// result: __/__/____
它也可以是长字符串。在这种情况下,替换将针对您的模式中的每个组重新开始
[NSStringMask maskString:@"" withPattern:@"(\\d{2})/(\\d{2})/(\\d{4})" placeholder:@"abcde"]
// result: ab/ab/abcd
NSRegularExpression
您还可以提供一个NSRegularExpression实例而不是模式,结果相同。
当传递模式时,类创建一个具有0选项的NSRegularExpression对象。如果您需要它有所不同,可能更有趣的是提供正则表达式而不是字符串模式。
UITextFieldMask
要创建一个带有面具的文本字段,只需将其在您的类或nib(如果使用Interface Builder)中设置为实例UITextFieldMask
。建议在文本字段的初始化中传递面具,因此如果文本字段在nib中,则必须在[UIViewController viewDidLoad]
或[UIView awakeFromNib]
内部传递面具。
需要帮助
您是否热爱NSStringMask并且积极参与使用它的应用程序的开发?我们非常希望您能帮助我们不断提升它!请随时与我们联系或开始立即贡献!
完整文档 >
许可协议
NSStringMask适用于MIT许可证。有关更多信息,请参阅LICENSE文件。