我想从我的字符串中删除最后一行..这里的nsstring对象是_text。我的想法是从最后扫描字符,如果我找到一个回车符号我索引到该索引,芬兰语。但我不想删除每一个回车,只是最后一个。
所以我想做这样的事情:
for (int i = [_text length] ; i>0; i--) {
char character = [_text characterAtIndex:i];
if (character == @"\n") {
_text = [_text substringToIndex:i];
return;
}
}
任何帮助都将非常感谢! 感谢。
答案 0 :(得分:5)
您的方法是正确的,但您正在检查char是否等于文字字符串指针!试试这个:
if (character == '\n')
...
顺便说一句,这是一个换行符。回车符由'\r'
表示。另外,请注意,请检查您的内存管理。如果_text
是ivar,您可能需要使用setter。否则,你正在为它分配一个自动释放的对象,它可能在后一条路径中不再存在,从而导致其他问题。
答案 1 :(得分:1)
您可以尝试:
NSString *newString = [originalString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
它将删除所有前导和尾随回车'\ r'和新行'\ n'。
答案 2 :(得分:1)
您应该处理最后一个字符是空格或CR。 您还有一个错误,您需要长度 - 在for循环中为1。
这是一些有效的代码:
NSString *_text = [NSString stringWithString:@"line number 1\nline number 2\nlinenumber 3\n "];
// make sure you handle ending whitespace and ending carriage return
_text = [_text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSUInteger i;
unichar cr = '\n';
for (i = [_text length] - 1; i>0; i--)
{
if ([_text characterAtIndex:i] == cr)
{
break;
}
}
if (index > 0)
{
_text = [_text substringToIndex:i];
}
NSLog(@"%@", _text);
这输出: 2011-09-22 08:00:10.473 Craplet [667:707]第1行 第2行
答案 3 :(得分:0)
试试这个 -
if([_text characterAtIndex:[albumName length]-1] == '\n') //compare last char