Проверить строку в строке - PullRequest
0 голосов
/ 15 марта 2011

Я пытаюсь сравнить две строки

NSString strOne = @"Cat, Dog, Cow";
NSString strTwo = @"Cow";

Как определить, содержит ли strOne strTwo

Ответы [ 4 ]

4 голосов
/ 15 марта 2011

Попробуйте использовать rangeOfString:

NSRange result = [strOne rangeOfString:strTwo];

Из документации:

Возвращает структуру NSRange, указывающую местоположение и длину в получателе первого вхождения aString. Возвращает {NSNotFound, 0}, если aString не найден или пуст (@"").

1 голос
/ 05 апреля 2012

Я полагаю, что это правильный синтаксис для проверки существования диапазона (исправление ответа Кендалла): range.location != NSNotFound

1 голос
/ 15 марта 2011

Для тех, кому нужен код для проверки, существует ли строка внутри строки, вот мой код благодаря fbrereto. В этом примере проверяется, находится ли какая-либо строка, содержащаяся в массиве строк (stringArray), внутри строки (myString):

int count = [stringArray count];

for (NSUInteger x = 0; x < count; ++x) {

    NSRange range = [self.myString rangeOfString:[stringArray objectAtIndex:x]];

    if (range.length > 0) {
        // A match has been found
        NSLog(@"string match: %@",[stringArray objectAtIndex:x]);
    }
}
0 голосов
/ 09 июля 2013

Постепенно отходит от темы, но я всегда взрываю свои строки, что означает просто взорвать ее, используя строку поиска в качестве ключа, и вы можете использовать счетчик массива, чтобы увидеть, сколько у вас экземпляров.

ПростоВ случае, если кто-то исходит из языка кода, который использует "взорвать", чтобы взорвать строку в массив, как я, я обнаружил, что написание моей собственной функции разнесения чрезвычайно полезно, те, кто не использует "разнесение", пропускают:

работает следующим образом:

[self explodeString: @"John Smith|Age: 37|Account Balance: $75.00" key:@"|"];

, который будет возвращать этот массив:

[@"John Smith", @"Age: 37", @"Account Balance: $75.00"];

Это позволяет быстро извлечь определенное значение в ограниченном пространстве, например, если у вас естьклиент, и вы хотите знать, сколько денег у него есть:

[[self explodeString: clientData key: pipe] objectAtIndex: 1];

или, если вы хотите определенно сумму в долларах в виде числа с плавающей запятой:

[[[self explodeString: [[self explodeString: clientData key: pipe] objectAtIndex: 1] key: @": "] objectAtIndex: 2] floatValue];

в любом случае я считаю, что массивы работать намного прощес и более гибким, так что это очень полезно для меня.Кроме того, приложив немного усилий, вы можете создать тип данных «взрываемая строка» для вашей частной библиотеки, который позволит вам обращаться с ней как со строкой или возвращать значение индекса на основе ключа

ExplodableString *myExplodableString;
myExplodableString.string = @"This is an explodable|string";
NSString *secondValue = [myExplodableString useKey: @"|" toGetValue: index];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...