以下方法都是在类别中使用 :
- 给定{xx}yyyy{zzzz}tttt 返回 [{xx}, yyyy,{zzzz}, tttt] 字符串数组
/** 给定{xx}yyyy{zzzz}tttt 返回 [{xx}, yyyy,{zzzz}, tttt] 字符串数组 */
+(NSArray *)matching:(NSString *)messgae targetDataArr:(NSMutableArray *)targetArr{
NSString *desStr;
NSScanner *scanner = [NSScanner scannerWithString:messgae];
NSMutableArray *array = [NSMutableArray array];
/** 扫描给出的字符串 */
while (!scanner.isAtEnd) {
if ([scanner scanUpToString:@"{" intoString: &desStr]) {
NSString *resutlStr = [desStr stringByReplacingOccurrencesOfString:@"}" withString:@""];
!(resutlStr && resutlStr.length) ? :[array addObject:resutlStr];
}
if ([scanner scanUpToString:@"}" intoString: &desStr]) {
NSString *resutlStr = [desStr stringByAppendingString:@"}"];
!(resutlStr && resutlStr.length && ![resutlStr isEqualToString:@"{}"]) ? :[array addObject:resutlStr];
}
}
return array;
}
- (void) testMsg:(NSString *)message {
NSArray *array = [NSString matching:message];
for (NSString *tempStr in array) {
NSString *resultStr = tempStr;
if ([tempStr hasPrefix:@"{"] && [tempStr hasSuffix:@"}"]) {
resultStr = [tempStr stringByReplacingOccurrencesOfString:@"{" withString:@""];
resultStr = [resultStr stringByReplacingOccurrencesOfString:@"}" withString:@""];
// - {} 中的文字
}else{
// - 没有{}的文字
}
}
}
- 判断输入的字符串是不是有效的数字
/** 判断字符串是不是有效的数字 */
+ (BOOL)validateNumber:(NSString*)number{
BOOL res = YES;
NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
int i = 0;
while (i < number.length) {
NSString * string = [number substringWithRange:NSMakeRange(i, 1)];
NSRange range = [string rangeOfCharacterFromSet:tmpSet];
if (range.length == 0) {
res = NO;
break;
}
i++;
}
return res;
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField == self.countItemView.textFiled) {
BOOL shouldChange = [NSString validateNumber:string];
shouldChange ? : [[ControllerTool getCurrentVC].view showTost:@"只能填入数字哦~"];
return shouldChange;
}
return YES;
}
- 根据宽度 截取字符串
/** 根据宽度 截取字符串 */
-(NSString *)substringWithWidth:(CGFloat)width textAttributes:(NSDictionary *)attributes{
__block NSString *returnStr;
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
if ([self sizeWithAttributes:attributes].width <= width) {
returnStr = self;
return;
}
NSString *constStr = @"...";
CGFloat constWidth = [constStr sizeWithAttributes:attributes].width;
CGFloat textIndex = 0;
CGFloat textWidth = 0;
NSString *currentStr = @"";
while (textWidth < width - constWidth) {
currentStr = [self substringToIndex:textIndex];
textWidth = [currentStr sizeWithAttributes:attributes].width;
textIndex ++;
}
returnStr = [currentStr stringByAppendingString:constStr];
});
return returnStr;
}
- 截取字符串 string:你好呀 maxLength: 3 return:你好呀 maxLength:2 retrun 你好…
+ (NSString *)cropString:(NSString *)string maxLength:(NSUInteger)maxLength{
if (string.length <= maxLength) {
return string;
}
return [NSString stringWithFormat:@"%@...", [string substringToIndex:maxLength - 1]];
}