// 使用事例
UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(60, 160, 200, 45)];
textField.font = FONT_SIZE(14);
textField.keyboardType = UIKeyboardTypeNumberPad;
textField.textAlignment = NSTextAlignmentCenter;
textField.backgroundColor = [UIColor grayColor];
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
[self.view addSubview:textField];
- (void)textFieldDidChange:(UITextField *)textField
{
NSString *outputString = [NSString suffixInputString:self.textField.text replaceString:@"," formatter:3 limitCount:15];
textField.text = outputString;
}
/**
inputString输入格式化后 1,234 12,345 123,456
@param inputString 输入的字符串
@param replaceString 分割字符串
@param formatter 多少位分割
@param limitCount 最多可以输入多少字符
@return 分割后的字符串
*/
+ (NSString*)prefixInputString:(NSString*)inputString
replaceString:(NSString*)replaceString
formatter:(NSInteger)formatter
limitCount:(NSInteger)limitCount
{
if (inputString.length == 0 || formatter == 0 || limitCount <= formatter)
{
return inputString;
}
limitCount = (limitCount + (limitCount / formatter)) - 1;
NSLog(@"limitCount:%ld", limitCount);
if (inputString.length >= limitCount)
{
inputString = [inputString substringToIndex:limitCount];
}
NSString *originalString = [inputString stringByReplacingOccurrencesOfString:replaceString withString:@""];
NSMutableString *outputString = [NSMutableString stringWithCapacity:0];
for (NSInteger i = originalString.length - 1; i >= 0; i--)
{
NSString *inString = [originalString substringWithRange:NSMakeRange(i, 1)];
NSLog(@"i:%ld <==> inString:%@", i, inString);
if ((originalString.length - i) % formatter == 0)
{
[outputString insertString:[NSString stringWithFormat:@"%@%@", replaceString, inString] atIndex:0];
}
else
{
[outputString insertString:inString atIndex:0];
}
}
NSLog(@"outputString:%@", outputString);
if ([outputString hasPrefix:replaceString])
{
[outputString deleteCharactersInRange:NSMakeRange(0, 1)];
}
return outputString;
}
/**
inputString输入格式化后 123,4 123,45 123,456
@param inputString 输入的字符串
@param replaceString 分割字符串
@param formatter 多少位分割
@param limitCount 最多可以输入多少字符
@return 分割后的字符串
*/
+ (NSString*)suffixInputString:(NSString*)inputString
replaceString:(NSString*)replaceString
formatter:(NSInteger)formatter
limitCount:(NSInteger)limitCount
{
if (inputString.length == 0 || formatter == 0 || limitCount <= formatter)
{
return inputString;
}
limitCount = (limitCount + (limitCount / formatter)) - 1;
NSLog(@"limitCount:%ld", limitCount);
if (inputString.length >= limitCount)
{
inputString = [inputString substringToIndex:limitCount];
}
NSString *originalString = [inputString stringByReplacingOccurrencesOfString:replaceString withString:@""];
NSMutableString *outputString = [NSMutableString stringWithCapacity:0];
for (NSInteger i = 1; i <= originalString.length; i++)
{
NSString *inString = [originalString substringWithRange:NSMakeRange((i - 1), 1)];
NSLog(@"i:%ld <==> inString:%@", (i - 1), inString);
if (i % formatter == 0)
{
[outputString appendString:[NSString stringWithFormat:@"%@%@", inString, replaceString]];
}
else
{
[outputString appendString:inString];
}
}
NSLog(@"outputString:%@", outputString);
if ([outputString hasSuffix:replaceString])
{
[outputString deleteCharactersInRange:NSMakeRange((outputString.length - 1), 1)];
}
return outputString;
}