NSString 处理技巧:分割字符串

摘要 string类型是objective-c中用的最多的类型之一,有时会出现字符串中有我们不想要的字符。 如 "hello world"中的空格,或是"hello/world"中的‘/‘,亦或是"你好A你好"中的‘A‘。这些都可以通过NSString中的方法来解决。

一、带节点的字符串,如@"<p>讨厌的节点<br/></p>"我们只想要中间的中文

处理方法一:

NSString *string1 = @"<p>讨厌的节点<br/></p>";

        /*此处将不想要的字符全部放进characterSet1中,不需另外加逗号或空格之类的,除非字符串中有你想要去除的空格,此处< p /等都是单独存在,不作为整个字符*/

        NSCharacterSet *characterSet1 = [NSCharacterSet characterSetWithCharactersInString:@"<p/brh>"];

        // 将string1按characterSet1中的元素分割成数组

        NSArray *array1 = [string1 componentsSeparatedByCharactersInSet:characterSet1];

        NSLog(@"array = %@",array1);

        for(NSString *string1 in array1)
        {
            if ([string1 length]>0) {

                // 此处string即为中文字符串

                NSLog(@"string = %@",string1);
            }
        }

打印结果: 2013-05-31 10:55:34.017 string[17634:303]

array = (
    "",
    "",
    "",
    "\U8ba8\U538c\U7684\U8282\U70b9",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    ""
)
2013-05-31 10:55:34.049 string[17634:303] 
string = 讨厌的节点

二、带空格的字符串,如

@"hello world"去掉空格

NSString *string2 = @"hello world";

        /*处理空格*/

        NSCharacterSet *characterSet2 = [NSCharacterSet whitespaceCharacterSet];

        // 将string1按characterSet1中的元素分割成数组
        NSArray *array2 = [string2 componentsSeparatedByCharactersInSet:characterSet2];

        NSLog(@"\narray = %@",array2);

        // 用来存放处理后的字符串
        NSMutableString *newString1 = [NSMutableString string];

        for(NSString *string in array1)
        {
            [newString1 appendString:string];
        }
        NSLog(@"newString = %@", newString1);

打印结果:

2013-05-31 11:02:49.656 string[17889:303] 
array = (
    hello,
    world
)
2013-05-31 11:02:49.657 string[17889:303] newString = helloworld

PS:处理字母等其他元素只需将NSCharacterSet的值改变即可。

+ (id)controlCharacterSet;

+ (id)whitespaceCharacterSet;

+ (id)whitespaceAndNewlineCharacterSet;

+ (id)decimalDigitCharacterSet;

+ (id)letterCharacterSet;

+ (id)lowercaseLetterCharacterSet;

+ (id)uppercaseLetterCharacterSet;

+ (id)nonBaseCharacterSet;

+ (id)alphanumericCharacterSet;

+ (id)decomposableCharacterSet;

+ (id)illegalCharacterSet;

+ (id)punctuationCharacterSet;

+ (id)capitalizedLetterCharacterSet;

+ (id)symbolCharacterSet;

+ (id)newlineCharacterSet NS_AVAILABLE(10_5, 2_0);

+ (id)characterSetWithRange:(NSRange)aRange;

+ (id)characterSetWithCharactersInString:(NSString *)aString;

+ (id)characterSetWithBitmapRepresentation:(NSData *)data;

+ (id)characterSetWithContentsOfFile:(NSString *)fName;
时间: 06-02

NSString 处理技巧:分割字符串的相关文章

JS截取与分割字符串常用技巧总结

本文实例讲述了JS截取与分割字符串的常用方法.分享给大家供大家参考,具体如下: JS截取字符串可使用 substring()或者slice() 函数:substring() 定义:substring(start,end)表示从start到end之间的字符串,包括start位置的字符但是不包括end位置的字符. 功能:字符串截取,比如想从"MinidxSearchEngine"中得到"Minidx"就要用到substring(0,6) 例子: ? 1 2 3 var

按指定格式的子字符串,删除和分割字符串

删除就用- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;将@“[:1:]"”,替换成@“” 分割就用- (NSArray *)componentsSeparatedByString:(NSString *)separator;根据你选定分割符拆分字符串 IOS字符串按特定字符拆分成数组 NSString * fruits = @&quo

NSString 小技巧

// 首字母大写 NSString *string = @"liupengfei"; NSLog(@"\n function: %s \n string: %@",__FUNCTION__,[string capitalizedString]); // 分割字符串 NSString *string1 = @"I am iOS Engineer"; NSArray *array = [string1 componentsSeparatedByStr

分割字符串

#include <stdio.h> #include <string.h> /* 分割字符串 */ int main(void){ char s[100] = "123-456-789-abc-edf"; //strtok第一次调用的时候,第一个参数是字符串, //但第二次调用的时候,第一个参数是NULL const char *buf =strtok(s,"-"); while(buf){ printf("%s\n",

php分割字符串

php分割字符串的函数 1,substr $str1 = substr($str,5); echo "从第5个字符开始取至最后:".$str1."; $str2 = substr($str,9,4); echo "从第9个字符开始取4个字符:".$str2."; $str3 = substr($str,-5); echo "取倒数5个字符:".$str3."; $str4 = substr($str,-8,4); e

根据标识符分割字符串

常常遇到根据某个标识符分割字符串,并将分割的结果保存到字符串数组中.遇到过以下几种需求: 分隔符是一个字符集和,以便处理不同的输入格式,比如用tab或逗号分隔的输入 处理2个分隔符之间的内容为空的情况,2种需求,输出空字符串或者忽略掉 处理字符串末尾的回车符,2种需求,忽略或删除 c语言的strtok函数支持分割字符串,它在遇到分隔符之间的内容为空的时候会忽略掉空元素,往前推进返回下个非空的字符串,分割完成后返回NULL.这个函数貌似还有个多线程的版本. //分割字符串,如果遇到分割的结果是空字

java简单分割字符串内部实现

书写了一个简单版本的分割字符串 1 private static String[] mysplit(char[] myString, char c) { 2 // TODO 自动生成的方法存根 3 int count=0;///统计分割符号出现的次数 4 ///第一次遍历,统计分割符号出现的次数,那么返回的字符串数组就应该是分割数+1 5 for (int i = 0; i < myString.length; i++) { 6 if (myString[i]==c) { 7 count++;

分割字符串 ExtractStrings

//分割字符串 ExtractStrings var s: String; List: TStringList; begin s := 'about: #delphi; #pascal, programming'; List := TStringList.Create; ExtractStrings([';',',',':'],['#',' '],PChar(s),List); //第一个参数是分隔符; 第二个参数是开头被忽略的字符 ShowMessage(List.Text); //about

【字符串】面试题之以逗号分割字符串,形成二维数组

题目: 有一个字符串符合以下特征("abcdef,acccd,eeee,aaaa,e3eeeee,sssss,"), 要求写一个函数(接口),输出以下结果 1) 以逗号分割字符串,形成二维数组,并把结果传出: 2) 把二维数组行数运算结果也传出. 请自己定义一个接口(函数). 要求1:能正确表达功能的要求,定义出接口(函数)(30分): 要求2:正确实现接口(函数),并实现功能(40分): 要求3:编写正确的测试用例.(30分). //头文件 #include <stdio.h&

VC/MFC分割字符串(SplitString)返回CStringArray

引自:http://bbs.csdn.net/topics/60321228 原版: CStringArray* SplitString(CString string, char pattern) { CStringArray* strArray = new CStringArray(); CString strTemp; char c; for(int i=0;i<string.GetLength();i++) { c=string[i]; if(c==pattern) { strArray-