检查一个字符是否回车

时间:2011-09-22 11:36:00

标签: iphone objective-c ios

我想从我的字符串中删除最后一行..这里的nsstring对象是_text。我的想法是从最后扫描字符,如果我找到一个回车符号我索引到该索引,芬兰语。但我不想删除每一个回车,只是最后一个。

所以我想做这样的事情:

for (int i = [_text length] ; i>0; i--) {
    char character = [_text characterAtIndex:i];
    if (character == @"\n") {
       _text = [_text substringToIndex:i];
     return;
    }
}

任何帮助都将非常感谢! 感谢。

4 个答案:

答案 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