我想删除字符串中的最后一行..这里的nsstring对象是_text。我的想法是从末尾开始扫描字符,如果找到回车符号,则将子串返回到该索引,然后返回芬兰语。但我不想删除每个回车符,只删除最后一个。
所以我想做这样的事情:
for (int i = [_text length] ; i>0; i--) {
char character = [_text characterAtIndex:i];
if (character == @"\n") {
_text = [_text substringToIndex:i];
return;
}
}任何帮助都将不胜感激!谢谢。
发布于 2011-09-22 20:02:27
您应该处理最后一个字符为空格或CR。在for循环中还存在一个需要长度为-1的bug。
下面是一些有效的代码:
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 Craplet667:707line number 1 line number 2
发布于 2011-09-22 19:46:09
您的方法是正确的,但是您正在检查char是否等于文字字符串指针!试着这样做:
if (character == '\n')
...顺便说一下,这是一个换行符。回车由'\r'表示。另外,作为警告,请检查您的内存管理。如果_text是一个ivar,你可能想使用setter代替。否则,您将为其分配一个自动释放的对象,该对象可能在后面的路径中不再存在,从而导致其他问题。
发布于 2011-09-22 19:54:31
您可以尝试:
NSString *newString = [originalString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];它将删除所有前导和尾随回车符'\r‘以及换行符'\n’。
https://stackoverflow.com/questions/7514096
复制相似问题