0

ユーザーが UITextField に 2 つの単語を入力したかどうかを確認しようとしています。ただし、これら 2 つの単語がそれぞれ 2 文字以上であることも確認する必要があります。現時点では、UITextField の内容を確認する唯一の方法は、テキストの前の空白をトリミングした後、文字間の空白を確認することです。

これが私が取り組んでいる私のコードです:

if ([textField.text length] > 0) {

        NSString *name = [textField text];
        NSString *trimmedString = [name stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
        NSRange whiteSpaceRange = [trimmedString rangeOfCharacterFromSet:[NSCharacterSet whitespaceCharacterSet]];

        if (whiteSpaceRange.location != NSNotFound) {
            NSLog(@"Found whitespace");
        }

    }

前述のように、私の目標は UITextField の内容を取得し、ユーザーが 2 つの単語を入力したかどうかを確認することです。各単語の長さは少なくとも 2 文字です。私が間違っているのは何ですか?

4

3 に答える 3

2

まず、何をしているのかを理解してみましょう:メソッド
を使用しています。stringByTrimmingCharactersInSetApple ドキュメントから

指定された文字セットに含まれるレシーバ文字の両端から削除することによって作成された新しい文字列を返します。

これは、両端から文字セットを削除した後に単一の文字列を返すことを意味します。あなたの場合、スペースとタブである whiteCharacterSet を提供しました。つまり、このメソッドは、文字列の両端から余分なスペースを削除する場合に便利です。ただし、要件は、文字列内の 2 つの単語を分離することです。

この目的のために、NSString には、区切られた単語の配列を返す別のメソッドがあります。

componentsSeparatedByCharactersInSet:

指定されたセット内の文字で分割された受信者からの部分文字列を含む配列を返します。

このメソッドを使用すると、区切られた単語を簡単に取得し、for ループ チェックを使用して、各単語が最小 2 文字かどうかを確認できます。このような:

 NSString *str= @"Puneet";
  if ([str length] > 0) {
    NSArray *trimmedArray = [str componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    if(trimmedArray.count > 1)
    {
    for(NSString *str in trimmedArray)
    {
      if(str.length >=2)
        NSLog(@"Have minimum two characters");
      else
        NSLog(@"Dont Have minimum two characters");
    }
    }
    else{
      NSLog(@"No Two words are present");
    }
  }
于 2013-09-10T15:11:17.463 に答える
2

開始するのに最適な場所は、NSStringメソッドcomponentsSeparatedByCharactersInSet:を使用してテキスト フィールドの内容を複数の文字列に分割することNSArrayです。

次に、配列に少なくとも 2 つの要素 (単語) があることを確認し、キー値コーディングを使用して各要素が少なくとも 2 文字であることを確認します。

NSArray *words = [textField.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if (words.count == 2)
{
    NSNumber *lengthOfShortestWord = [words valueForKeyPath:@"@min.length"];
    if (lengthOfShortestWord.intValue == 2)
    {
        // Success !
    }
}
于 2013-09-10T15:00:49.907 に答える
1

以下のチェックはどうですか:

if ([textField.text length] > 0) {
    NSArray *name = [textField.text componentsSeparatedByString:@" "];
    if (name.count == 2) {
        if (((NSString *)name[0]).length >= 2) {
            if (((NSString *)name[1]).length >= 2){
                //do something
            }
        }
    }
}
于 2013-09-10T15:00:50.047 に答える