嗨,只是想知道是否有可能,因为用户正在输入一串数字以在字符串的每 5 个字符处动态添加一个连字符......
任何帮助将不胜感激。
嗨,只是想知道是否有可能,因为用户正在输入一串数字以在字符串的每 5 个字符处动态添加一个连字符......
任何帮助将不胜感激。
试试这个代码。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *separator = @"-";
int seperatorInterval = 5;
NSString *originalString = [textField.text stringByReplacingOccurrencesOfString:separator withString:@""];
if (![originalString isEqualToString:@""] && ![string isEqualToString:@""]) {
NSString *lastChar = [textField.text substringFromIndex:[textField.text length] - 1];
int modulus = [originalString length] % seperatorInterval;
if (![lastChar isEqualToString:separator] && modulus == 0) {
textField.text = [textField.text stringByAppendingString:separator];
}
}
return YES;
}
假设您使用UITextField进行输入,您可以在UITextFieldTextDidChangeNotification
每次修改文本时使用该操作来响应。一个快速而粗略的例子:
- (IBAction)textChanged:(UITextField*)sender
{
NSString* curText = sender.text;
//when checking the length, you need to exclude hyphens from the count
//which is currently not being done (thanks @titaniumdecoy)
if([curText length] % 5 == 0)
{
sender.text = [curText stringByAppendingString:@"-"];
}
}
只需声明并分配 2 个字符串。将数字存储在一个字符串(str 1)中并计算每个条目的字符串长度。检查字符串长度何时为四位数,执行
str2 = [str1 appendByString:@"`"];
现在str1 = str2;
再次循环重复此过程,增量为 4 位。
希望它会有所帮助。
只是一个概念尝试制作每 5 个字符的子字符串,然后在这些子字符串上附加一个连字符,然后将每个字符连接起来。为此,您需要创建一个子字符串数组。使用此逻辑函数
-(NSString *)makeMyString:(NSString *)stringA
{
NSMutableArray *tempArray1=[NSMutableArray array];
//NSString *s=@"12345123451234512";
NSString *s=stringA;
BOOL flag=YES;
while(flag)
{
NSString *str;
if([s length]>=5)
str=[s substringWithRange:NSMakeRange(0,5)];
else
str=s;
[tempArray1 addObject:str];
str=nil;
if([s length]>=5)
s=[s substringWithRange:NSMakeRange(5,([s length]-5))];
else
s=@"";
if([s isEqualToString:@""])
flag=NO;
}
NSString *makeString=@"";
for(int i=0;i<[tempArray1 count];i++)
{
if([[tempArray1 objectAtIndex:i] length]==5)
makeString =[NSString stringWithFormat:@"%@%@`",makeString,[tempArray1 objectAtIndex:i]];
else {
makeString =[NSString stringWithFormat:@"%@%@",makeString,[tempArray1 objectAtIndex:i]];
}
}
NSLog(@"%@",makeString);
return makeString;
}