2

私が取り組んでいるアプリでは、テキスト フィールドに文字 A、T、C、または G のみが含まれているかどうかを確認する必要があります。さらに、入力されたその他の文字に対して特殊なエラー メッセージを作成したいと考えています。例)「スペースを入れないでください。」または「文字 b は受け入れられない値です。」このような他の投稿をいくつか読みましたが、それらは英数字であり、指定された文字のみが必要です。

4

3 に答える 3

5

ユニークとはほど遠い、あなたのための1つのアプローチ:

NStringNSRangeには、指定された 内の文字から構成される、位置とオフセットのとして表される部分文字列を検索するメソッドがありますNSCharacterSet

文字列に含まれるべきもののセット:

NSCharacterSet *ATCG = [NSCharacterSet characterSetWithCharactersInString:@"ATCG"];

そして、すべきでないもののセット:

NSCharacterSet *invalidChars = [ATCG invertedSet];

で構成される任意の範囲の文字を検索できるようになりましたinvalidChars

NSString *target; // the string you wish to check
NSRange searchRange = NSMakeRange(0, target.length); // search the whole string
NSRange foundRange = [target rangeOfCharacterFromSet:invalidChars
                                             options:0 // look in docs for other possible values
                                               range:searchRange];

無効な文字がない場合foundRange.locationは と等しくなりNSNotFoundます。それ以外の場合は、文字の範囲を調べてfoundRange、特殊なエラー メッセージを生成します。

プロセスを繰り返し、 にsearchRange基づいて更新しfoundRangeて、無効な文字のすべての実行を見つけます。

見つかった無効な文字をセット (おそらくNSMutableSet) に蓄積し、最後にエラー メッセージを生成することができます。

正規表現も使用できます。 を参照してくださいNSRegularExpressions

HTHなど

補遺

これに対処するための非常に簡単な方法がありますが、あなたが与えた手紙が非常に長い文字列を扱っている可能性があり、上記のように提供されたメソッドを使用することは価値があるかもしれないことを示唆しているため、私はそれを与えませんでした. しかし、あなたのコメントの後に考え直してみると、多分私はそれを含める必要があります:

NSString *target; // the string you wish to check
NSUInteger length = target.length; // number of characters
BOOL foundInvalidCharacter = NO;   // set in the loop if there is an invalid char

for(NSUInteger ix = 0; ix < length; ix++)
{
   unichar nextChar = [target characterAtIndex:ix]; // get the next character

   switch (nextChar)
   {
      case 'A':
      case 'C':
      case 'G':
      case 'T':
         // character is valid - skip
         break;

      default:
         // character is invalid
         // produce error message, the character 'nextChar' at index 'ix' is invalid
         // record you've found an error
         foundInvalidCharacter = YES;
   }
}

// test foundInvalidCharacter and proceed based on it

HTH

于 2013-10-13T17:57:22.743 に答える
0

NSRegularExpression クラスのリファレンスを見てください。

訪問: https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html

于 2013-10-13T17:34:12.940 に答える