-1

私はiOSコードインタープリターを作っています。すべてのチェックが完了しましたが、現時点では 1 つのコマンドしか入力できません。ユーザーが複数のコマンドを UITextView に入力できるようにしたい。私がテキスト ビューで行うことを計画しているのは、各行に IF ステートメントの行を渡すことです。

各行を1行ずつifステートメント行に渡す方法を知っている人はいますか?

- (IBAction)runCommad:(id)sender {

    //Alert
    NSString *alertCheck = @"alert(";
    NSRange alertCheckRange = [code.text rangeOfString : alertCheck];
    //Logger
    NSString *logCheck = @"log(";
    NSRange logCheckRange = [code.text rangeOfString : logCheck];

    if (alertCheckRange.location != NSNotFound) {
//If the compiler sees alert()...
        NSString *commandEdit;
        commandEdit = code.text;
        commandEdit = [commandEdit stringByReplacingOccurrencesOfString:@"alert(" withString:@""];
        commandEdit = [commandEdit stringByReplacingOccurrencesOfString:@")" withString:@""];
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Syn0" message:commandEdit delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];

    }else  if (logCheckRange.location != NSNotFound) {
        //If the compiler sees log()...
        NSString *commandEdit;
        commandEdit = code.text;
        commandEdit = [commandEdit stringByReplacingOccurrencesOfString:@"log(" withString:@""];
        commandEdit = [commandEdit stringByReplacingOccurrencesOfString:@")" withString:@""];
        logFile = [NSString stringWithFormat:@"%@\n%@", logFile,commandEdit];
        logTextView.text = logFile;
    }
}
4

2 に答える 2

1

2つの提案、最初にブロックに慣れている場合は、を使用できますNSString

(void)enumerateLinesUsingBlock:(void (^)(NSString *line, BOOL *stop))block

このメソッドは、ブロックを呼び出して、元の文字列の各行を順番に渡します。stopに設定した各行を処理する前に停止する場合YES

または、次を使用することもできますNSString

(NSArray *)componentsSeparatedByString:(NSString *)separator

これにより、文字列がに基づいてコンポーネントに分割されますseparator。これをfor列挙で使用します。

for(NSString *nextLine in [originalString componentsSeparatedByString:@"\n"])
{
   // process nextLine, break from loop to stop before processing each line
}
于 2012-05-18T02:18:45.907 に答える
1

まず、評価する文字列コンポーネントを取得します。

NSString *text = [textView text];    
NSArray *components = [text componentsSeperatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

文字列でスイッチを使用することはできないため、if を使用してケースごとに確認する必要があります。

for (NSString *string in components)
{
    if ([string isEqualToString:@"The first string you're matching"])
    {
        //Do something because you found first string
    }

    if([string isEqualToString:@"The second string you're matching"])
    {
        //Do something else
    }
}

それがアイデアです。

于 2012-05-18T02:25:45.263 に答える