首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查字符是否为回车符

问检查字符是否为回车符
EN

Stack Overflow用户
提问于 2011-09-22 19:36:00
回答 4查看 5.4K关注 0票数 2

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

所以我想做这样的事情:

代码语言:javascript
复制
for (int i = [_text length] ; i>0; i--) {
    char character = [_text characterAtIndex:i];
    if (character == @"\n") {
       _text = [_text substringToIndex:i];
     return;
    }
}

任何帮助都将不胜感激!谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-22 20:02:27

您应该处理最后一个字符为空格或CR。在for循环中还存在一个需要长度为-1的bug。

下面是一些有效的代码:

代码语言:javascript
复制
    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

票数 1
EN

Stack Overflow用户

发布于 2011-09-22 19:46:09

您的方法是正确的,但是您正在检查char是否等于文字字符串指针!试着这样做:

代码语言:javascript
复制
 if (character == '\n')
       ...

顺便说一下,这是一个换行符。回车由'\r'表示。另外,作为警告,请检查您的内存管理。如果_text是一个ivar,你可能想使用setter代替。否则,您将为其分配一个自动释放的对象,该对象可能在后面的路径中不再存在,从而导致其他问题。

票数 5
EN

Stack Overflow用户

发布于 2011-09-22 19:54:31

您可以尝试:

代码语言:javascript
复制
NSString *newString = [originalString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];

它将删除所有前导和尾随回车符'\r‘以及换行符'\n’。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7514096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档