博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS如何过滤掉文本中特殊字符
阅读量:5304 次
发布时间:2019-06-14

本文共 3714 字,大约阅读时间需要 12 分钟。

NSString 分割

 

An NSString object represents a string of ordered characters (text). An NSCharacterSet object represents a set of characters in no particular order. It is often much quicker to determine whether a character is a member of an NSCharacterSet than an NSString. You can't use an NSCharacterSet object to hold text, at least not in any sensible way, because it does not maintain any order of characters, its use is primarily for determining whether a character exists in a set of characters.

我们在nsstring的分割,查找等操作中,经常会提供两种函数,参数类型分别为NSString NSCharacterset,有什么不同呢?

NSString 是有序字符串

NSCharacterset是无需字符集合,主要用来判断已知字符串是否包含制定字符集,而不可以用来保存字符串。

 

转自:

 

ios中 可以使用stringByTrimmingCharactersInSet函数过滤字符串中的特殊符号

首先自己定义一个NSCharacterSet, 包含需要去除的特殊符号

NSCharacterSet *set = [NSCharacterSetcharacterSetWithCharactersInString:@"@/:;()「」"、[]{}#%-*+=_\\|~<>$€^·'@#$%^&*()_+'""];

由于NSString中有全角符号和半角符号因此有些符号要包括全角和半角的

然后调用stringByTrimmingCharactersInSet

NSString *trimmedString = [stringstringByTrimmingCharactersInSet:set];

trimmedString就是过滤后的字符串

 

转自:

 

NSCharacterSet 去除NSString中的空格

去除 username中的空格,tablenewlinenextline 

代码如下:
NSCharacterSet *whitespace =[NSCharacterSet  whitespaceAndNewlineCharacterSet]; 
NSString * username =[mUsernameField stringValue]; 
username =[username  stringByTrimmingCharactersInSet:whitespace]; 
注释:

 

stringByTrimmingCharactersInSet: 
Returns a new string made by removing from both ends of the receiver characters contained in a given characterset. 
whitespaceAndNewlineCharacterSet 
Returns a character set containing only the whitespace charactersspace (U+0020) and tab (U+0009) and the newline and nextlinecharacters (U+000A–U+000D, U+0085). 
另外可以用 whitespaceCharacterSet 替换 whitespaceAndNewlineCharacterSet 区别newlinenextline 
whitespaceCharacterSet 
Returns a character set containing only the in-line whitespacecharacters space (U+0020) and tab (U+0009).

 

NSString *temptext =[messageTextField.texts tringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceCharacterSet]];

NSString *text = [temptextstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet ]];

1行是去除2端的空格

2行是去除回车

 

转自:

 

这是典型的其他语言中trim方法。我要问的是,如何去掉最左边的空格?又该如何去掉最右边的空格?

NSString的类中没有提供实现这类需求的方法,我们只能手工去添加这些方法。

@interface NSString (TrimmingAdditions)  

- (NSString *)stringByTrimmingLeftCharactersInSet:(NSCharacterSet *)characterSet ;  

- (NSString *)stringByTrimmingRightCharactersInSet:(NSCharacterSet *)characterSet ;  

@end  

  

@implementation NSString (TrimmingAdditions)  

 

  - (NSString *)stringByTrimmingLeftCharactersInSet:(NSCharacterSet *)characterSet {  

    NSUInteger location = 0;  

    NSUInteger length = [self length];  

    unichar charBuffer[length];      

    [self getCharacters:charBuffer];  

    for (location; location < length; location++) {  

        if (![characterSet characterIsMember:charBuffer[location]]) {  

            break;  

        }  

    }  

      return [self substringWithRange:NSMakeRange(location, length - location)];  

}  

  

- (NSString *)stringByTrimmingRightCharactersInSet:(NSCharacterSet *)characterSet {  

    NSUInteger location = 0;  

    NSUInteger length = [self length];  

    unichar charBuffer[length];      

    [self getCharacters:charBuffer];    

    for (length; length > 0; length--) {  

        if (![characterSet characterIsMember:charBuffer[length - 1]]) {  

            break;  

        }  

    }  

      return [self substringWithRange:NSMakeRange(location, length - location)];  

}  

 

@end  

 

使用stringByTrimmingRightCharactersInSet方法去掉一个字符串最右边的空格。

NSLog(@"%@",[@"abc  123   " stringByTrimmingRightCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]);  

 如何去掉一个字符串@“0.012300”最右边的“0“呢?这是典型的float格式化成字符串以后的形式,显示时最好去掉最右边的“0”

解决方法如下:

[@"0.012300" stringByTrimmingRightCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"0"]];  

NSStringtrim字符时,不理解为何不提供分别去掉左右字符的方法,如其他语言的ltrimrtim

 

转载于:https://www.cnblogs.com/ChouDanDan/p/5787856.html

你可能感兴趣的文章
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
JavaScript动画打开半透明提示层
查看>>
Mybatis生成resulteMap时的注意事项
查看>>
jquery-jqzoom 插件 用例
查看>>
1007. Maximum Subsequence Sum (25)
查看>>
iframe的父子层跨域 用了百度的postMessage()方法
查看>>
图片生成缩略图
查看>>
动态规划 例子与复杂度
查看>>
查看oracle数据库的连接数以及用户
查看>>
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>