substringWithRange 适用于硬编码字符串,但不适用于用户输入的字符串
substringWithRange works with hard coded string, but not user-input string
当我对有问题的字符串进行硬编码并尝试使用 substringWithRange 时,它工作得很好。但是当我将用户输入作为 char 并将其转换为 NSString 时,它会抛出 NSRange 异常。是因为我在投一个字符吗?
这行不通:
char word[30];
NSString *otherWord = [NSString stringWithFormat:@"%s", word];
scanf("%s", word);
NSString *firstCharacter = [otherWord substringWithRange:NSMakeRange(0, 3)];
但是,这个确实如此:
char word[30];
NSString *otherWord = @"SomeString";
scanf("%s", word);
NSString *firstCharacter = [otherWord substringWithRange:NSMakeRange(0, 3)];
我还检查以确保 "otherWord" 具有正确的值,确实如此。
有什么建议吗?
你需要设置char word[30] 等于某物,否则转换为运行 subStringWithRange 时它里面的字符不够。因此 NSRange 异常。
char word[30] = {'a', 'b', 'c', 'd'};
scanf("%s", word);
NSString *otherWord = [NSString stringWithCString:word encoding:NSASCIIStringEncoding];
NSString *firstCharacter = [otherWord substringWithRange:NSMakeRange(0, 3)];
NSLog(@"%@",firstCharacter);
在您的代码中,您首先使用字符数组创建字符串。之后你正在阅读用户输入:
变化:
NSString *otherWord = [NSString stringWithFormat:@"%s", word];
scanf("%s", word);
至:
scanf("%s", word);
NSString *otherWord = [NSString stringWithCString:word encoding:NSUTF8StringEncoding];
当我对有问题的字符串进行硬编码并尝试使用 substringWithRange 时,它工作得很好。但是当我将用户输入作为 char 并将其转换为 NSString 时,它会抛出 NSRange 异常。是因为我在投一个字符吗?
这行不通:
char word[30];
NSString *otherWord = [NSString stringWithFormat:@"%s", word];
scanf("%s", word);
NSString *firstCharacter = [otherWord substringWithRange:NSMakeRange(0, 3)];
但是,这个确实如此:
char word[30];
NSString *otherWord = @"SomeString";
scanf("%s", word);
NSString *firstCharacter = [otherWord substringWithRange:NSMakeRange(0, 3)];
我还检查以确保 "otherWord" 具有正确的值,确实如此。
有什么建议吗?
你需要设置char word[30] 等于某物,否则转换为运行 subStringWithRange 时它里面的字符不够。因此 NSRange 异常。
char word[30] = {'a', 'b', 'c', 'd'};
scanf("%s", word);
NSString *otherWord = [NSString stringWithCString:word encoding:NSASCIIStringEncoding];
NSString *firstCharacter = [otherWord substringWithRange:NSMakeRange(0, 3)];
NSLog(@"%@",firstCharacter);
在您的代码中,您首先使用字符数组创建字符串。之后你正在阅读用户输入:
变化:
NSString *otherWord = [NSString stringWithFormat:@"%s", word];
scanf("%s", word);
至:
scanf("%s", word);
NSString *otherWord = [NSString stringWithCString:word encoding:NSUTF8StringEncoding];