我对 Cocoa 编程很陌生,我正在尽力创建一个程序,让用户在文本字段中输入文本,然后按下按钮。当按下按钮时,文本应该将某些子字符串替换为某些字符。没有一个子字符串长于 2 个字符,尽管有些子字符串只有一个字符长。执行替换后,新获取的文本将被放入另一个文本字段。
子字符串替换的示例可能是“n”应该更改为“5”,“nj”应该更改为“g”,“ng”应该更改为“s”。所以文本“现在注射注射器!” 将更改为“Igect the syrise 5ow!”
我怎样才能以简单而优雅的方式实现这一目标?我已经尝试了以下代码,但它似乎不起作用。
- (IBAction)convert:(id)sender {
NSMutableString *x;
[x setString:[self.input stringValue]];
NSMutableString *output1;
[output1 setString:@""];
NSMutableString *middle;
middle = [[NSMutableString alloc] init];
int s;
unsigned long length = [x length];
for (s = 0; s < length; s = s + 1) {
if (s + 2 <= length) { // if more than or equal to two characters left
[middle setString:[x substringWithRange:NSMakeRange(s, 2)]];
if ([middle isEqualToString:@"nj"]) {
[output1 appendToString:@"g"];
s = s+1;
} else if ([middle isEqualToString:@"ng"]) {
[output1 appendToString:@"s"];
s = s+1;
} else { // if no two-character sequence matched
[middle setString:[x substringWithRange:NSMakeRange(s, 1)]];
if ([middle isEqualToString:@"n"]) {
[output1 appendString:@"5"];
}
}
} else { // if less than two characters left
[middle setString:[x substringWithRange:NSMakeRange(s, 1)]];
if ([middle isEqualToString:@"n"]) {
[output1 appendString:@"5"];
}
}
}
[self.output setStringValue:output1];
}
这里,*x
是来自文本的地方input
,*output1
是存储结果的地方,*middle
由被测试的文本组成,input
并且output
是NSTextField
s。