0

Xcode には、ifandelseステートメントがあります。

ステートメントに複数の条件を持たせたいのですが、そのうちの 1 つだけが「YES」である必要があります。

:

NSStringその文字列の値は次のとおりです。

[NSstring stringWithFormat:@"ABCDEFG12345"];

文字列にorが含まれているかどうAかを if ステートメントでチェックする必要があります。使い方が分かりました。15[string rangeOfString:@"CheckHere"];

if指定された文字/数字の 1 つまたはすべてを見つけるには、ステートメントが必要です。1 つ見つかった場合は指定されたコードを実行し、2 つ見つかった場合は指定されたコードを実行し、3 つすべてが見つかった場合は指定されたコードを実行します。

4

3 に答える 3

6

if-else は必要ありません。このようなことができます。

NSString* string = @"ABCDEFG12345";

int foundA = [string rangeOfString:@"A"].location == NSNotFound ? 0 : 1;
int found1 = [string rangeOfString:@"1"].location == NSNotFound ? 0 : 1;
int found5 = [string rangeOfString:@"5"].location == NSNotFound ? 0 : 1;

int foundCount = foundA + found1 + found5;

switch(foundCount) {
    case 1: [self executeOne]; break;
    case 2: [self executeTwo]; break;
    case 3: [self executeThree]; break;
}
于 2013-10-19T03:33:12.187 に答える
1

1 つの可能なアプローチ:

rangeOfString と rangeOfCharacter 呼び出しの (実際にはやや面倒な) 使用法をつなぎ合わせて、次のようなメソッドを記述できると仮定しましょう。

-(NSInteger)numberOfMatchesFoundInString:(NSString*)inputString;

文字列を渡すことができ、見つかった一致の数に基づいて 0,1,2... を返します。

この便利な結果を非常に読みやすい方法で使用するには、switch ステートメントを使用できます。

NSInteger* matches = [self numberOfMatchesFoundInString:someString];
switch (matches) {
    case 0:
        //execute some code here for when no matches are found
        break;
    case 1:
        //execute some different code when one match is found
        break;
    case 2:
        //you get the idea
        break;

    default:
        //some code to handle exceptions if the numberOfMatchesFoundInString method went horribly wrong
        break;

もちろん、機能的には呼び出しと変わらないと言う人もいます。

 if (someCondition) {
     //do some stuff
 }
 else if (someOtherCondition) {
     //do some different stuff
 }
 etc...

しかし、実際には、どちらかを機能させることができます。

于 2013-10-19T03:37:39.973 に答える
1

文字列の比較に使用できる便利なテクニックがいくつかあります。

文字列が文字列のリストの 1 つであるかどうかをテストする必要がある場合は、次のようなものを使用します。

NSArray *options = @[@"first", @"second", @"third"];
if ([options contains:inputString]) {
    // TODO: Write true block
} else {
    // TODO: Write else block
}

文字列にセットの文字が少なくとも 1 つ含まれているかどうかを確認するには、NSString -rangeOfCharacterFromSet:を使用します。

残念ながら、文字列に 1 つ以上の文字列が含まれているかどうかを確認したい場合は、長い道のりを書き出すしかありません。頻繁に行う場合は、クラス カテゴリを作成することを選択できます。

- (BOOL)containsAtLeastOneSubstring:(NSArray *)substrings
{ 
    for (NSString *aString in substrings) {
        NSRange range = [self rangeOfString:aString];
        if (range.location!=NSNotFound) {
            return YES;
        }
    }
    return NO;
}

-

于 2013-10-19T03:38:55.120 に答える