问题描述
项目中,
1.有些输入框TextField需要控制字符串头尾不要空格。
2.还有一些字符串中不能出现空格。
3.只能输入字母和数字(控制TextField只能接受显示控制内的字符)
针对以上各种情况,一一解决:
解决办法:
1.去掉字符串头尾空格:
OC实现:
使用NSString中的stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]方法只是去掉左右两边的空格;
NSString *str = [NSString stringWithFormat:@" sda sda "];
str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSLog(@"%@", str);
Swift实现:
var str = " sda sad "
str = str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
print(str)
输出结果:
2.去掉字符串中所有空格:
OC实现:
使用NSString *strUrl = [urlString stringByReplacingOccurrencesOfString:@" " withString:@""];可以去掉空格,注意此时生成的strUrl是autorelease属性的,不要妄想对strUrl进行release操作。
NSString *str = [NSString stringWithFormat:@" 你 好 嘛 , 跟谁 俩 呢 ! "];
str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"%@", str);
Swift实现:
var str = " 你 好 嘛 , 跟谁 俩 呢 ! "
str = str.stringByReplacingOccurrencesOfString(" ", withString: "")
print(str)
输出结果:
3.控制TextField只能接受显示控制内的字符:
控制输入的字符,只需要遵守UITextFieldDelegate代理,实现代理方法即可,具体操作在代理方法
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
然后在代理方法中实现即可;
<1>引入协议
<2>设置代理
<3>实现协议方法
第一步第二步不做代码演示了。第三步代理:
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if textField.tag == 101 {
let characterSet = NSCharacterSet(charactersInString: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789").invertedSet
let filtered = string.componentsSeparatedByCharactersInSet(characterSet)
let ss = filtered.joinWithSeparator("")
return ss == string
}
return true
}