1

首先,我想为我缺乏一般编程知识而道歉。我正在学习,发现这个网站对我来说是一个巨大的赞美。

我创建了一个包含三个 UITextField(thePlace,theVerb,theOutput) 和两个 UITextView 的程序,其中一个 textviews(theOutput) 从另一个 textview(theTemplate) 获取文本并用在文本字段中输入的文本替换一些字符串。

当我单击一个按钮时,它会触发下面列出的方法 createStory。除了一个例外,这很好用。输出中的文本仅将字符串“数字”更改为文本字段中的文本。但是,如果我更改方法中的顺序以替换 'place'、'number'、'verb' 仅更改动词,而不更改数字。

我确定这是某种简单的解决方法,但我找不到。你们中的一些人可以帮助我解决问题吗?

- (IBAction)createStory:(id)sender {
    theOutput.text=[theTemplate.text stringByReplacingOccurrencesOfString:@"<place>" withString:thePlace.text];
    theOutput.text=[theTemplate.text stringByReplacingOccurrencesOfString:@"<verb>" withString:theVerb.text];
    theOutput.text=[theTemplate.text stringByReplacingOccurrencesOfString:@"<number>" withString:theNumber.text];
}

非常感谢//埃米尔

4

3 回答 3

2

问题是您要覆盖theOutput.text每一行的内容;var1 = var2;覆盖其中的数据var1并将其替换为var2.

尝试这个:

- (IBAction)createStory:(id)sender 
{
   NSString* tempStr = [theTemplate.text stringByReplacingOccurrencesOfString:@"<place>" withString:thePlace.text];
   tempStr = [tempStr stringByReplacingOccurrencesOfString:@"<verb>" withString:theVerb.text];
   theOutput.text = [tempStr stringByReplacingOccurrencesOfString:@"<number>" withString:theNumber.text];
}

这有意义吗?:)

于 2012-06-04T22:42:57.657 回答
0
- (IBAction)createStory:(id)sender {
    theOutput.text=[theTemplate.text stringByReplacingOccurrencesOfString:@"<place>" withString:thePlace.text];
    theTemplate.text=[theTemplate.text stringByReplacingOccurrencesOfString:@"<verb>" withString:theVerb.text];
    theTemplate.text=[theTemplate.text stringByReplacingOccurrencesOfString:@"<number>" withString:theNumber.text];
}

这行得通吗?

于 2012-06-04T22:38:54.163 回答
0

首先,确保thePlace.text并且theVerb.text没有返回空值?但这不是你的问题。

NSLog(@"thePlace: %@",thePlace.text);
NSLog(@"theVerb: %@",theVerb.text);

您的代码应该是:

- (IBAction)createStory:(id)sender {

    NSString * output = theTemplate.text;

    output = [output stringByReplacingOccurrencesOfString:@"<place>" withString:thePlace.text];
    output = [output stringByReplacingOccurrencesOfString:@"<verb>" withString:theVerb.text];
    output = [output stringByReplacingOccurrencesOfString:@"<number>" withString:theNumber.text];

    theOutput.text = output;
}
于 2012-06-04T22:40:34.833 回答