0

我正在做作业,我必须从 NSInputstream 接收传入的消息,并且必须在 UItableview 中查看它,我可以接收消息并正确发送消息,但有时我的字符串写在同一行,即使我给客栈。

有人知道吗????

例如:
@abc:123:123:123:123@
@abc:123:123:123:123@
@abc:1:2:3@

第一行在第一行打印,但在第二行也打印第三行,谁能告诉我如何制作一个格式,如果字符串以“@”开头和结尾将写入不在同一行的每一行。

我做了很多过滤消息,但它失败了

我的代码:

    case NSStreamEventHasBytesAvailable:

        if (theStream == inputStream) {

            uint8_t buffer[1024];
            int len;

            while ([inputStream hasBytesAvailable]) {
                len = [inputStream read:buffer maxLength:sizeof(buffer)];
                if (len > 0) {

                    NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];

                    if (nil != output) {
                        NSLog(@"server said: %@", output);
                    }
                }
            }
        }
        break;
NSIndexPath *topIndexPath = [NSIndexPath indexPathForRow:messages.count-1 inSection:0];
[self.tView scrollToRowAtIndexPath:topIndexPath 
                  atScrollPosition:UITableViewScrollPositionMiddle 
                          animated:YES];

输出:
@abc:123:123:123:123@
@abc:123:123:123:123@ @abc:1:2:3@

但我期待:

@abc:123:123:123:123@
@abc:123:123:123:123@
@abc:1:2:3@

....如果字符串以“@”开头和结尾必须写在下一行...问题是因为某个时间字符串很小所以它占用同一行,但我希望它在下一行如果以“@”开头和结尾

4

1 回答 1

0

您可以通过组件分隔来使用数组..

    NSString* string = @"@abc:123:123:123:123@@abc:123:123:123:123@123:123:123:1@abc:1:2:3@123:123:123:1@abc:123:123:123:123@@abc:123:123:123:123@ 123:123:123:1@abc:1:2:3@ @abc:123:123:123:123@@abc:123:123:123:123@123:123:123:1@abc:1:2:3@ 123:123:123:1@abc:123:123:123:123@123:123:123:1@abc:123:123:123:123@123:123:123:1@abc:1:2:3@";

NSMutableString* formatString = [NSMutableString string];

NSArray* strArr = [string componentsSeparatedByString:@"@"];
for (NSString* str in strArr)
{
    [formatString appendFormat:@"%@@\n@",str];
}
NSLog(@"%@",formatString);
于 2013-04-03T13:00:53.643 回答