ios-怎么限制除了点和下划线的特殊字符

问题描述

怎么限制除了点和下划线的特殊字符

怎么限制UITextField 中的特殊字符?只保留点和下划线。我用了下面的代码,但是没有反应:

#define ACCEPTABLE_CHARECTERS @" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_."

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
         NSCharacterSet *acceptedInput = [NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARECTERS];
        if (![[string componentsSeparatedByCharactersInSet:acceptedInput] count] > 1){
            NSLog(@"not allowed");
            return NO;
        }
        else{
            return YES;
        }
}

解决方案

我想了好半天,不知道怎么回答好...因为方法太多了...
方法一: 使用scaner(如果你坚持要自定义accetpable的字符)

NSString *yourString = @"tBe47s_-#h54df";

NSMutableString *resultString = [NSMutableString stringWithCapacity:yourString.length];

NSScanner *scanner = [NSScanner scannerWithString:yourString];
NSCharacterSet *charSet = [NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_."];

while ([scanner isAtEnd] == NO)
{
    NSString *buffer;
    if ([scanner scanCharactersFromSet:charSet intoString:&buffer])
        [resultString appendString:buffer];
    else
        [scanner setScanLocation:([scanner scanLocation] + 1)];
}

NSLog(@"result: %@", resultString);

方法二:正则表达式(iOS4.0以后适用,4之前要用第三方库)

NSString *yourString = @"tBe%#&4.7s_-#h5S4df";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
                              regularExpressionWithPattern:@"([^A-Za-z0-9_.])"
                              options:0
                              error:&error];

NSString *resString = [regex stringByReplacingMatchesInString:yourString options:0 range:NSMakeRange(0, yourString.length) withTemplate:@""];
NSLog(@"result: %@", resString);
时间: 2025-01-21 15:02:20

ios-怎么限制除了点和下划线的特殊字符的相关文章

iOS 按钮上的文字添加下划线的方法_IOS

问题:实现下图中右侧的按钮文字效果 方法: [MyTools createMyImageview:topEditView frame:CGRectMake(widthAll-90, 12, 17, 16) imageName:@"离线课程_下载更多.png"]; UIButton *downMoreButton = [MyTools createMyBtn:@"下载更多" frame:CGRectMake(widthAll-70, 10, 60, 20) uivie

CSS中的下划线text-decoration属性使用进阶

  定义和用法 text-decoration 属性规定添加到文本的修饰. 注释:修饰的颜色由 "color" 属性设置. 说明 这个属性允许对文本设置某种效果,如加下划线.如果后代元素没有自己的装饰,祖先元素上设置的装饰会"延伸"到后代元素中.不要求用户代理支持 blink. 默认值: none 继承性: no 可能的值 none 默认.定义标准的文本. underline 定义文本下的一条线. overline 定义文本上的一条线. line-through 定

Excel文档编辑里面“填空型”下划线地运用

下划线经常出现在调查或问卷中,用来指示需要填写内容的位置.在Excel中我们可以先在单元格中添加空格,然后再选中空格,单击"格式"工具栏上的"下划线"按钮来制作这种"填空型"下划线,但或许朋友们曾经遇到这种情况:当下划线后没有其他字符时,如果输入焦点转向了其它单元格,刚才还显示的最后一部分下划线就消失了,双击单元格使其重新处于内部编辑状态,下划线会再次出现,但回车后又重新隐藏,而且始终不能打印.如图1. 文档编辑里面"填空型"

win8.1系统如何去除IE浏览器超链接的下划线

  1.进入win8系统后在metro菜单中直接双击进入到IE浏览器程序之中,如果大家发现win8电脑的metro界面中没有IE浏览器的话,则可以先返回到win8电脑的传统桌面,然后双击进入到IE浏览器; 2.在打开的IE浏览器界面中,依次点击上方的设置-Internet选项,然后就会出现一个Internet选项窗口;   3.在打开的Internet选项窗口中,您将界面切换到高级这一栏中,然后在下面找到"为链接加下划线"选项; 4.然后将它的状态设置为"从不",完

Android 如何自定义EditText 下划线?

项目要求:  笔者曾经做过一个项目,其中登录界面的交互令人印象深刻.交互设计师给出了一个非常作的设计,要求做出包含根据情况可变色的下划线,左侧有可变图标,右侧有可变删除标志的输入框,如图  记录制作过程: 第一版本 public class LineEditText extends EditText { private Paint mPaint; private int color; public static final int STATUS_FOCUSED = 1; public stati

PhotoShop如何给字体添加下划线

今天一天一直在弄博客的东西,因为使用的是别人的主题,所以就更换为自己的一些图案以及logo. 当然在更换过程中,肯定要使用PhotoShop的.这一次我们,是要在PS中为字体添加下划线. 首先选中要添加下划线的文字,然后点击"窗口"→"字符"

XStream双下划线问题解决与CDATA标记同时的方案

1.问题 在微信开发过程中,需要进行xml格式的数据传输.有些微信接口的xml数据中需要加上CDATA标记,而大部分的xml数据的标签名都带有下划线.注意,微信接口中的数据是有下划线的,是"_"不是"-",让我很郁闷. 2.使用XStream把Java对象转成xml格式的数据 UnifiedOrder unifiedOrder = new UnifiedOrder(); unifiedOrder.setAppid("123456"); unifi

如何在WPS文字中让下划线远离文字

在要加下划线的文字前后各加一个空格,然后选中文字及前后的空格,点击加下划线,再次选中文字(这次不要选中前后的空格),打开[字体]对话框选择[字符间距]选项卡,将[位置]选择为[提升]然后将其后的值输进去.

自定义网页超链接下划线的CSS代码

链接元素的所有CSS属性可以合并为: a {    text-decoration: none;     background: url(underline.gif) repeat-x 100% 100%;    padding-bottom: 4px;    white-space: nowrap;} 如果你想自定义下划线的效果只在鼠标滑过链接时出现,只需设置CSS背景属性为:hover伪类,取代直接设置于链接元素上的样式即可. a {    text-decoration: none;