Как вы проверяете, начинается ли NSString с определенного символа (символ *).
* - индикатор типа ячейки, поэтому мне нужно содержимое этого NSString без *, но нужно знать, существует ли *.
Как вы проверяете, начинается ли NSString с определенного символа (символ *).
* - индикатор типа ячейки, поэтому мне нужно содержимое этого NSString без *, но нужно знать, существует ли *.
Вы можете использовать метод -hasPrefix:
NSString
:
Objective-C:
NSString* output = nil;
if([string hasPrefix:@"*"]) {
output = [string substringFromIndex:1];
}
Swift:
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 работает особенно хорошо.
например, если вы искали http-url в NSString
, вы должны использовать 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
- это строка, которую вы ищете
Возвращаемое значение - YES, если aString соответствует начальным символам приемника, в противном случае NO. Возвращает NO, если aString
пуст.
Используйте characterAtIndex:
. Если первый символ является звездочкой, используйте substringFromIndex:
, чтобы получить строку sans '*'.
NSString *stringWithoutAsterisk(NSString *string) {
NSRange asterisk = [string rangeOfString:@"*"];
return asterisk.location == 0 ? [string substringFromIndex:1] : string;
}
В качестве более общего ответа попробуйте использовать метод hasPrefix. Например, приведенный ниже код проверяет, начинается ли строка с 10, что является кодом ошибки, используемым для идентификации определенной проблемы.
NSString* myString = @"10:Username taken";
if([myString hasPrefix:@"10"]) {
//display more elegant error message
}
Другой подход для этого.
Помогите кому-нибудь...
if ([[temp substringToIndex:4] isEqualToString:@"http"]) {
//starts with http
}
Это может помочь?:)
Просто найдите символ в индексе 0 и сравните его со значением, которое вы ищете!
Этот приятный маленький код, который я нашел случайно, и я еще не видел его предложенным на Stack. Он работает только в том случае, если символы, которые вы хотите удалить или изменить, существуют, что удобно во многих сценариях. Если символ /s не существует, он не изменит ваш 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);
Эта одна строка очень проста для выполнения трех действий в одном:
NSString* expectedString = nil;
if([givenString hasPrefix:@"*"])
{
expectedString = [givenString substringFromIndex:1];
}