как использовать stringWithFormat для динамического добавления дефисов в мою строку - PullRequest
1 голос
/ 27 апреля 2011

Привет, просто интересно, возможно ли это, поскольку пользователь вводит строку чисел для динамического добавления дефиса к каждому 5-му символу строки ...

любая помощь будет принята с благодарностью.

Ответы [ 4 ]

5 голосов
/ 27 апреля 2011

Попробуйте этот код.

- (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;
}
1 голос
/ 27 апреля 2011

Если вы используете 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:@"-"];
    }
}
0 голосов
/ 27 апреля 2011

Просто попытайтесь создать подстроки из каждых 5 символов, затем добавить к ним дефис и объединить каждый из них. для этого нужно сделать массив substrings.use этой логической функции

-(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;
}
0 голосов
/ 27 апреля 2011

Просто объявите и выделите 2 строки.Сохраните числа в одну строку (строка 1) и посчитайте длину строки для каждой записи.Проверьте, когда длина строки будет четырехзначной, выполните

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

сейчас str1 = str2;

и повторите этот процесс в цикле с шагом 4 цифры.

Надеется, что это будетПомогите.

...