Мы помещаем большую бизнес-логику в хранимых процедурах - это не идеально, но довольно часто это - хороший баланс между производительностью и надежностью.
И мы знаем, где это, не имея необходимость перерывать акры решений и кодовой базы!
Думаю, это именно то, что вам нужно?
text = [текстовая строкаByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
Когда я разбираю ответ веб-службы, я получаю \ n в качестве последнего символа…
Когда я пытаюсь сделать следующее:
if (! [String isEqualToString: @ "\ n"])
Проверка всегда не будет обнаруживать новую строку.
Это сообщение вернет только YES
, если строка
имеет длину один символ и этот символ равен \ n
.
Если вы хотите проверить, заканчивается ли строка на \ n
, вам нужно использовать hasSuffix:
:
if (![string hasSuffix:@"\n"])
Если вы хотите удалите \ n
с конца строки и используйте то, что осталось, решение phunehehe является правильным.
Изменить: В ответе Джереми В. Шермана он указывает на веб-службу может давать вам текст, заканчивающийся CRLF. Это допустимая точка, и вам следует не только искать \ n
в конце строки, но также проверять полную последовательность \ r \ n
. Код, который он представляет, - один из способов сделать это. Как бы вы это ни делали,
Веб-служба, вероятно, завершает все строки с помощью 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 '