componentsseparatedbystring(componentsseparatedby和split的区别)
今天给各位分享componentsseparatedbystring的知识,其中也会对componentsseparatedby和split的区别进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
如何在char数组和NSString之间进行转换
Char数组与NSString之间可以通过stringWithCString:encoding和 cStringUsingEncoding:来转换,但是最近在工作中发现将一个unsigned char数组(里面存储的是十六进制的数据)转化成NSString时,得到的结果有些数据却不正确,当然再将NSString转化成unsigned char数组时,结果也不正确了,找了下资料,只能把char里面的元素转换成字符串,再保存到NSString对象中,具体如下:
unsigned char sData[10];
NSMutableString*hexString= [NSMutableString string];
for(int i=0; i<sizeof(sData); i++)
{
[hexString appendFormat:@"%02x", sData[i]];
}
由于还要将NSString转成char数组,于是在转NSString的时候每个元素后面加了一个空格,要转char数组的是先将NSString转成NSArray,再转化为char数组(比较笨的一种方法):
unsigned char mCode;
NSArray*arr= [hexString componentsSeparatedByString:@""];
for(int i= 0; i< arr.count;++i){
sscanf([[arr objectAtIndex:i] UTF8String],"%x",&mCode);
sData[i]= mCode;
}
componentsseparatedby和split的区别
在NSString中有两个分割字符串的方法,分别为components(separatedBy:)方法和components(separatedBy:)方法。
(1)components(separatedBy:)方法是将字符串根据指定的字符串参数进行分割,并将分别的内容转换为一个数组。其语法形式如下:
func components(separatedBy separator: String)-> [String]
其中,separator用来指定分割字符串。
【示例1-67】以下将使用components(separatedBy:)方法将字符串进行分割。
import Foundation
var a=NSString(string:"A,B,C,D,E,F")
print("分割前:\(a)")
print("分割后:\(a.components(separatedBy:","))")//分割字符串
运行结果如下:
分割前:A,B,C,D,E,F
分割后:["A","B","C","D","E","F"]
(2)components(separatedBy:)方法是将字符串根据指定的字符编码参数进行分割,并将分别的内容转换为一个数组。其语法形式如下:
func components(separatedBy separator: CharacterSet)-> [String]
其中,separator用来指定分割的字符集。
【示例1-68】以下将使用components(separatedBy:)方法将字符串进行分割。
import Foundation
var a=NSString(string:"A*B*C*D*E*F")
print("分割前:\(a)")
var b:CharacterSet=NSCharacterSet(charactersIn:"*") as CharacterSet
print("分割后:\(a.components(separatedBy: b)))")
运行结果如下:
分割前:A*B*C*D*E*F
分割后:["A","B","C","D","E","F"])
--------------------------------------------------------
split()方法用于把一个字符串分割成字符串数组。
语法
stringObject.split(separator,howmany)
参数
描述
separator必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
返回值
一个字符串数组。该数组是通过在 separator指定的边界处将字符串 stringObject分割成子串创建的。返回的数组中的字串不包括 separator自身。
但是,如果 separator是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。
ios 怎样关闭textfield 的 长按手势
首先要重写UITextFiled子类在初始化方法下面 copy下面方法就禁止了长按出现的菜单
//干掉textField的长按菜单禁止copy paste
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if([UIMenuController sharedMenuController]){
[UIMenuController sharedMenuController].menuVisible= NO;
}
return NO;
}
在开发中我们有时候会对UITextFiled进行一些操作,说一下如何只输入中文,或者只输入数字和英文 2中方法
我直接用宏定义定义:
#define kAlphaNum@"abcdefghijklmnopqrstuvwxyz"//这种是对应只输入中文不允许其他数字或者符号的
#define kEnglishNum@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"//这种是对应只能输入数字和英文的方法
执行UITextField的delegate方法切记 textFiled.delegate= self;
下面直接上代码:
-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string
{
UITextField*nameField=(UITextField*)[self viewWithTag:200];
UITextField*cardField=(UITextField*)[self viewWithTag:201];
if(textField== nameField){
//只允许输入中文
NSCharacterSet*cs;
cs= [[NSCharacterSet characterSetWithCharactersInString:kAlphaNum] invertedSet];
NSString*filtered= [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
BOOL basic= [string isEqualToString:filtered];
NSString*text= [textField.text stringByReplacingCharactersInRange:range withString:string];
if(_delegate&& [_delegate respondsToSelector:@selector(passName:)]){
[_delegate passName:text];
}
return basic;
}
if(textField== cardField){
//只允许输入英文和数字
NSCharacterSet*cs;
cs= [[NSCharacterSet characterSetWithCharactersInString:kEnglishNum] invertedSet];
NSString*filtered= [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
BOOL basic= [string isEqualToString:filtered];
NSString*text= [textField.text stringByReplacingCharactersInRange:range withString:string];
if(_delegate&& [_delegate respondsToSelector:@selector(passCard:)]){
[_delegate passCard:text];
}
return basic;
}
return YES;
}
感谢您的阅读!希望本文对解决您关于componentsseparatedbystring和componentsseparatedby和split的区别的问题有所帮助。如果您还有其他疑问,欢迎随时向我们提问。