int len = [@"Hello" length];
可变字符串
SMutableString *string1;
NSMutableString *string2=[[NSMutableStringalloc]init];//初始化
string1 = [NSMutableString stringWithString: @"This is a string"];
string2 = string1;
[string2 appendString:
@" and it is mine!"];
对字符串进行检索
NSString *string1 = @"The quick brown fox jumped";
NSRange match;
match = [string1 rangeOfString: @"brown fox"];
if (match.location == NSNotFound)
NSLog (@"Match not found");
location 的意思就是所寻找的字符串的起始位置,注意是从0开始数而不是1,length 就是找到的这个字符串有多长,这个是从1开始数的
如果没有找到,系统会给location 设置成NSNotFound
替换部分字符
[string1 replaceCharactersInRange: NSMakeRange(16, 3) withString: @"squirrel"];
删除部分字符
[string1 deleteCharactersInRange: [string1 rangeOfString: @"jumped"]];
截取字符串
NSMutableString *string1 = [NSMutableString stringWithString: @"The quick brown fox jumped"];
NSString *string2;
string2 = [string1 substringWithRange: NSMakeRange (4, 5)];
NSString *string3;
string3 = [string1 substringFromIndex: 4];
NSString*string =@"sdfsfsfsAdfsdf";
string = [string substringToIndex:7];//截取下标7之前的字符串,不包括7
NSLog(@"截取的值为:%@",string);
[string substringFromIndex:2];//截取下标2之后的字符串,包括2
NSLog(@"截取的值为:%@",string);
插入字符
[string1 insertString: @"agile, " atIndex: 4];
比较字符串
NSString *string1 = @"My String";
NSString *string2 = @"My String";
if (string1 == string2)
NSLog (@"地址相等");
else if ([string1 isEqualToString: string2])
NSLog (@"内容相等");
查看字符串的前缀和后缀
NSString *string1 = @"The quick brown fox jumped";
BOOL result;
result = [string1 hasPrefix: @"The"];
if (result)
NSLog (@"String begins with The");
result = [string1 hasSuffix: @"dog"];
if (result)
NSLog (@"String ends with dog");
单词首字母大写:
NSString *string1 = @"The quicK brOwn fox jumpeD";
NSString *string2;
string2 = [string1 capitalizedString];
结果是 "The Quick Brown Fox Jumped" .
全部小写
NSString *string1 = @"The quicK brOwn fox jumpeD";
NSString *string2;
string2 = [string1 lowercaseString];
结果是 "the quick brown fox jumped".
全部大写
NSString *string1 = @"The quicK brOwn fox jumpeD";
NSString *string2;
string2 = [string1 uppercaseString];
结果是 "THE QUICK BROWN FOX JUMPED".
以上例子改变的都是string2,而string1仍然保持原样不变。
把字符串转成数字类型:
转换为 int
NSString *string1 = @"10";
int myInt = [string1 intValue];
NSLog (@"%i", myInt);
• 转换为 double
NSString *string1 = @"10.1092";
double myDouble = [string1 doubleValue];
NSLog (@"%f", myDouble);
• 转换为 float
NSString *string1 = @"10.1092";
float myFloat = [string1 floatValue];
NSLog (@"%f", myFloat);
• 转换为 NSInteger
NSString *string1 = @"10";
NSInteger myInteger = [string1 integerValue];
NSLog (@"%li", myInteger);
NSString *tempA = @"123";
NSString *tempB = @"456";
字符串拼接
NSString *newString = [NSString stringWithFormat:@"%@%@",tempA,tempB];
int转字符
NSString *stringInt = [NSString stringWithFormat:@"%d",intString];
float转字符
NSString *stringFloat = [NSString stringWithFormat:@"%f",intString];
把字符串转换为 ASCII 码:
NSString *string1 = @"The quick browen fox";
const char *utfString = [string1 UTF8String];
字符串与 NSData互转:
NSString* aStr = [[NSString alloc] initWithData:aData encoding:NSASCIIStringEncoding];
NSData* aData = [aStr dataUsingEncoding: NSASCIIStringEncoding];
NSData-> Byte数组
Byte *testByte = (Byte *)[aData bytes];
NSData *adata = [[NSData alloc] initWithBytes: testByte length:24];
Byte数组->16进制数
Byte *bytes = (Byte *)[aData bytes];
NSString *hexStr=@"";
for(int i=0;i<[encryData length];i++)
{
NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16进制数
if([newHexStr length]==1)
hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];
else
hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];
}
NSLog(@"bytes 的16进制数为:%@",hexStr);
16进制数->Byte数组
///// 将16进制数据转化成Byte 数组
NSString *hexString = @"3e435fab9c34891f"; //16进制字符串
int j=0;
Byte bytes[128]; ///3ds key的Byte 数组, 128位
for(int i=0;i<[hexString length];i++)
{
int int_ch; /// 两位16进制数转化后的10进制数
unichar hex_char1 = [hexString characterAtIndex:i]; ////两位16进制数中的第一位(高位*16)
int int_ch1;
if(hex_char1 >= '0' && hex_char1 <='9')
int_ch1 = (hex_char1-48)*16; //// 0 的Ascll - 48
else if(hex_char1 >= 'A' && hex_char1 <='F')
int_ch1 = (hex_char1-55)*16; //// A 的Ascll - 65
else
int_ch1 = (hex_char1-87)*16; //// a 的Ascll - 97
i++;
unichar hex_char2 = [hexString characterAtIndex:i]; ///两位16进制数中的第二位(低位)
int int_ch2;
if(hex_char2 >= '0' && hex_char2 <='9')
int_ch2 = (hex_char2-48); //// 0 的Ascll - 48
else if(hex_char1 >= 'A' && hex_char1 <='F')
int_ch2 = hex_char2-55; //// A 的Ascll - 65
else
int_ch2 = hex_char2-87; //// a 的Ascll - 97
int_ch = int_ch1+int_ch2;
NSLog(@"int_ch=%d",int_ch);
bytes[j] = int_ch; ///将转化后的数放入Byte数组里
j++;
}
NSData *newData = [[NSData alloc] initWithBytes:bytes length:128];
NSLog(@"newData=%@",newData);
3. NSData 与 UIImage
NSData->UIImage
UIImage *aimage = [UIImage imageWithData: imageData];
//例:从本地文件沙盒中取图片并转换为NSData
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *name = [NSString stringWithFormat:@"ceshi.png"];
NSString *finalPath = [path stringByAppendingPathComponent:name];
NSData *imageData = [NSData dataWithContentsOfFile: finalPath];
UIImage *aimage = [UIImage imageWithData: imageData];
UIImage-> NSData
NSData *imageData = UIImagePNGRepresentation(aimae);
判断邮箱输入的是否正确:
- (BOOL) validateEmail: (NSString *) candidate {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:candidate];