NSStringが特定の文字(文字*)で始まるかどうかをどのように確認しますか。
*はセルのタイプを示すインジケータなので、*のないこのNSStringのコンテンツが必要ですが、*が存在するかどうかを知る必要があります。
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))
}
次を使用できます。
NSString *newString;
if ( [[myString characterAtIndex:0] isEqualToString:@"*"] ) {
newString = [myString substringFromIndex:1];
}
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を返します。
characterAtIndex:
を使用します。最初の文字がアスタリスクの場合、 substringFromIndex:
を使用して文字列sans '*'を取得します。
NSString *stringWithoutAsterisk(NSString *string) {
NSRange asterisk = [string rangeOfString:@"*"];
return asterisk.location == 0 ? [string substringFromIndex:1] : string;
}
それを行う別のアプローチ..
誰かを助けることができます...
if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
//starts with http
}
より一般的な答えとして、hasPrefixメソッドを使用してみてください。たとえば、次のコードは、文字列が10で始まるかどうかを確認します。10は、特定の問題を識別するために使用されるエラーコードです。
NSString* myString = @"10:Username taken";
if([myString hasPrefix:@"10"]) {
//display more elegant error message
}
これは役立つかもしれませんか? :)
インデックス0の文字を検索し、探している値と比較するだけです!
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
expectedString = [givenString substringFromIndex:1];
}
偶然見つけたこの素敵な少しのコードは、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 = @"&amp;";
//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つで実行するのが非常に簡単です。