从数组中读取字符串然后更改字符串并输出新结果

时间:2012-10-08 16:50:14

标签: objective-c cocoa nsmutablearray

我想在我的数组中抓取一个字符串,将字符串中的第n个字母更改为?,然后将结果打印在文本字段中。问题是我的NSMutableArray被存储到UIPickerView中,我认为最好只是从PickerView读取字符串然后更改第n个字符并打印结果。我正在努力学习如何从拾取器中获取字符串并更改第n个字母。

    - (UIView *)viewForRow:(NSInteger)row forComponent:(NSInteger)component
    {
    if (row == 0 ) {
     NSString *originalStringTwo = @"%@", *arrayDictionary;
    NSRange two = [originalStringTwo rangeOfString:@"2"];
    NSString *newStringTwo = [originalStringTwo stringByReplacingCharactersInRange:two        withString:@"?"];

    _resultLabel.text = newStringTwo;
    }


    if (row == 1 ) {
    NSString *originalStringThree = @"%@", *arrayDictionary;
    NSRange three = [originalStringThree rangeOfString:@"3"];
    NSString *newStringThree = [originalStringThreestringByReplacingCharactersInRange:three withString:@"?"];

    _resultLabel.text = newStringThree;
    }

    if ( row == 2 ) {
    NSString *originalStringFour = @"%@", *arrayDictionary;
    NSRange four = [originalStringFour rangeOfString:@"4"];
    NSString *newStringFour = [originalStringFour stringByReplacingCharactersInRange:four withString:@"?"];

   _resultLabel.text = newStringFour;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:0)

这不是你创建NSRange的方式。请改用NSMakeRange

// Range from index 1 with length 1, eg. 2nd character:
NSRange two = NSMakeRange(2, 1);
NSString *newStringTwo = [originalStringTwo stringByReplacingCharactersInRange:two
                          withString:@"?"];

请注意,从GUI元素中获取任何数据(用户输入除外)绝不是一个好主意。如果文本字段应用自定义格式怎么办?

您应该将数据保存在数组中并使用它。