web-dev-qa-db-ja.com

NSStringが特定の文字で始まるかどうかを確認する方法

NSStringが特定の文字(文字*)で始まるかどうかをどのように確認しますか。

*はセルのタイプを示すインジケータなので、*のないこのNSStringのコンテンツが必要ですが、*が存在するかどうかを知る必要があります。

207
Xetius

NSString-hasPrefix:メソッドを使用できます。

目的C:

NSString* output = nil;
if([string hasPrefix:@"*"]) {
    output = [string substringFromIndex:1];
}

スイフト:

var output:String?
if string.hasPrefix("*") {
    output = string.substringFromIndex(string.startIndex.advancedBy(1))
}
446
Rob Keniger

次を使用できます。

NSString *newString;
if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) {
     newString = [myString substringFromIndex:1];
}
12
Chris Long

hasPrefix は特にうまく機能します。たとえば、NSStringでhttp URLを探している場合、componentsSeparatedByStringを使用してNSArrayを作成し、hasPrefixを使用して配列を反復処理して、 httpで始まります。

NSArray *allStringsArray = 
   [myStringThatHasHttpUrls componentsSeparatedByString:@" "]

for (id myArrayElement in allStringsArray) {
    NSString *theString = [myArrayElement description];
    if ([theString hasPrefix:@"http"]) {
        NSLog(@"The URL  is %@", [myArrayElement description]);
    }

}

hasPrefixは、指定された文字列がレシーバーの開始文字に一致するかどうかを示すブール値を返します。

- (BOOL)hasPrefix:(NSString *)aString, 

パラメーターaStringは、aStringがレシーバーの先頭文字に一致する場合は戻り値はYES、そうでない場合は検索する文字列です。 aStringが空の場合、NOを返します。

8
Iggy

characterAtIndex: を使用します。最初の文字がアスタリスクの場合、 substringFromIndex: を使用して文字列sans '*'を取得します。

4
outis
NSString *stringWithoutAsterisk(NSString *string) {
    NSRange asterisk = [string rangeOfString:@"*"];
    return asterisk.location == 0 ? [string substringFromIndex:1] : string;
}
4
Chuck

それを行う別のアプローチ..

誰かを助けることができます...

if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
  //starts with http
}
4
Xar E Ahmer

より一般的な答えとして、hasPrefixメソッドを使用してみてください。たとえば、次のコードは、文字列が10で始まるかどうかを確認します。10は、特定の問題を識別するために使用されるエラーコードです。

NSString* myString = @"10:Username taken";

if([myString hasPrefix:@"10"]) {
      //display more elegant error message
}
3
Kyle Clegg

これは役立つかもしれませんか? :)

http://developer.Apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//Apple_ref/occ/instm/NSString/characterAtIndex

インデックス0の文字を検索し、探している値と比較するだけです!

1
djhworld
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
   expectedString = [givenString substringFromIndex:1];
}
0

偶然見つけたこの素敵な少しのコードは、Stackで提案されているのをまだ見ていません。削除または変更する文字が存在する場合にのみ機能します。これは多くのシナリオで便利です。文字が存在しない場合、NSStringは変更されません。

NSString = [yourString stringByReplacingOccurrencesOfString:@"YOUR CHARACTERS YOU WANT TO REMOVE" withString:@"CAN either be EMPTY or WITH TEXT REPLACEMENT"];

これは私がそれを使用する方法です:

//declare what to look for
NSString * suffixTorRemove = @"</p>";
NSString * prefixToRemove = @"<p>";
NSString * randomCharacter = @"</strong>";
NSString * moreRandom = @"<strong>";
NSString * makeAndSign = @"&";

//I AM INSERTING A VALUE FROM A DATABASE AND HAVE ASSIGNED IT TO returnStr
returnStr = [returnStr stringByReplacingOccurrencesOfString:suffixTorRemove withString:@""];
returnStr = [returnStr stringByReplacingOccurrencesOfString:prefixToRemove withString:@""];
returnStr = [returnStr stringByReplacingOccurrencesOfString:randomCharacter withString:@""];
returnStr = [returnStr stringByReplacingOccurrencesOfString:moreRandom withString:@""];
returnStr = [returnStr stringByReplacingOccurrencesOfString:makeAndSign withString:@"&"];

//check the output
NSLog(@"returnStr IS NOW: %@", returnStr);

この1行は、3つのアクションを1つで実行するのが非常に簡単です。

  1. 不要な文字を文字列で確認します
  2. 好きなものに置き換えることができます
  3. 周囲のコードには影響しません
0
App Dev Guy