1

嗨,只是想知道是否有可能,因为用户正在输入一串数字以在字符串的每 5 个字符处动态添加一个连字符......

任何帮助将不胜感激。

4

4 回答 4

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;
}
于 2011-04-27T05:00:54.107 回答
1

假设您使用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:@"-"];
    }
}
于 2011-04-27T04:50:06.300 回答
0

只需声明并分配 2 个字符串。将数字存储在一个字符串(str 1)中并计算每个条目的字符串长度。检查字符串长度何时为四位数,执行

str2 = [str1 appendByString:@"`"];

现在str1 = str2;

再次循环重复此过程,增量为 4 位。

希望它会有所帮助。

于 2011-04-27T04:40:14.483 回答
0

只是一个概念尝试制作每 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;
}
于 2011-04-27T05:13:46.237 回答