NSString isEqualToString: для \n

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

И мы знаем, где это, не имея необходимость перерывать акры решений и кодовой базы!

9
задан Quinn Taylor 3 October 2009 в 17:50
поделиться

3 ответа

Думаю, это именно то, что вам нужно?
text = [текстовая строкаByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];

20
ответ дан 4 December 2019 в 06:35
поделиться

Когда я разбираю ответ веб-службы, я получаю \ n в качестве последнего символа…

Когда я пытаюсь сделать следующее:

 if (! [String isEqualToString: @ "\ n"])

Проверка всегда не будет обнаруживать новую строку.

Это сообщение вернет только YES , если строка имеет длину один символ и этот символ равен \ n .

Если вы хотите проверить, заканчивается ли строка на \ n , вам нужно использовать hasSuffix: :

if (![string hasSuffix:@"\n"])

Если вы хотите удалите \ n с конца строки и используйте то, что осталось, решение phunehehe является правильным.

Изменить: В ответе Джереми В. Шермана он указывает на веб-службу может давать вам текст, заканчивающийся CRLF. Это допустимая точка, и вам следует не только искать \ n в конце строки, но также проверять полную последовательность \ r \ n . Код, который он представляет, - один из способов сделать это. Как бы вы это ни делали,

12
ответ дан 4 December 2019 в 06:35
поделиться

Веб-служба, вероятно, завершает все строки с помощью CRLF , то есть "\ r \ n" . Вы работаете в системе UNIX, поэтому символ перевода строки '\ n' используется в качестве разделителя строк; возврат каретки '\ r' остается как часть предыдущей строки. При печати он будет иметь тот же эффект, что и '\ n' . Вы проверили (используя, скажем, strvis ), что символ конца строки - это '\ n' , а не '\ r' ?

- [NSString hasSuffix:] будет перехватывать только указанный вами символ новой строки. Чтобы проверить, заканчивается ли строка символом новой строки или пробелом, вот предполагаемый метод категории:

- (BOOL)my_hasWhitespaceOrNewlineSuffix {
  NSRange r = [self rangeOfCharacterFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]
                                    options:NSBackwardsSearch];
  BOOL foundChar = r.location != NSNotFound;
  BOOL isLineFinal = foundChar && (r.location + r.length == [self length]);
  return isLineFinal;
}

Вы можете использовать phunehehe '

4
ответ дан 4 December 2019 в 06:35
поделиться