即使在修剪

时间:2016-02-02 08:37:38

标签: ios objective-c removing-whitespace trim

我在下面。

NSString *myStxt = [postText.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
myStxt = [myStxt stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
myStxt = [myStxt stringByReplacingOccurrencesOfString:@"\r" withString:@""];
myStxt = [myStxt stringByReplacingOccurrencesOfString:@"\t" withString:@""];

NSLog(@"myStxt>>%@<<", [myStxt substringToIndex:1]);

postText.text包含我通过webservice分配的阿拉伯字符串

postText.text = [[myArray objectAtIndex:0] valueForKey:@"myVariable"];

措辞为‏رونالدينهو : الكرة الذهبية الخامسة لميسي رائعه و هي من ضمن تلك الأشياء التي تُعطيني سعاده اكثر

现在,当我在上面运行上面的代码时,结果是......

myStxt>><<  --> NSLog(@"myStxt>>%@<<", [myStxt substringToIndex:1]);
myStxt>>ر<<  --> NSLog(@"myStxt>>%@<<", [myStxt substringToIndex:2]);

我的期望如下:

myStxt>>ر<<  --> NSLog(@"myStxt>>%@<<", [myStxt substringToIndex:1]);
myStxt>>رو<<  --> NSLog(@"myStxt>>%@<<", [myStxt substringToIndex:2]);

知道为什么这会给我错误的细节吗?

This is link for JSON Data

第二个对象给了我这个问题,但是第三个对象正常工作。

编辑1

以下代码

for (int i=0;i<myStxt.length;i++) {
    NSLog(@"mmm==%d==%@", i, [myStxt substringWithRange:NSMakeRange(i,1)]);
}

以下是输出

2016-02-02 12:01:40.587 myapp[91747:12700140] mmm==0==‏
2016-02-02 12:01:40.587 myapp[91747:12700140] mmm==1==ر
2016-02-02 12:01:40.588 myapp[91747:12700140] mmm==2==و
2016-02-02 12:01:40.588 myapp[91747:12700140] mmm==3==ن
2016-02-02 12:01:40.588 myapp[91747:12700140] mmm==4==ا
2016-02-02 12:01:40.588 myapp[91747:12700140] mmm==5==ل
2016-02-02 12:01:40.588 myapp[91747:12700140] mmm==6==د
2016-02-02 12:01:40.588 myapp[91747:12700140] mmm==7==ي
...... and so on...

3 个答案:

答案 0 :(得分:1)

加载JSON后,很明显文本中的第一个字符是RIGHT-TO-LEFT MARK,这是一个格式字符,因此在修剪空白字符时不会将其删除。

您可以使用以下方法将其删除:

text = [text stringByTrimmingCharactersInSet:[NSCharacterSet controlCharacterSet]];

要自己测试,可以使用以下代码:

for (NSUInteger i = 0; i < text.length; i++) {
    NSLog(@"Character at index %@: \"%i\"", @(i), [text characterAtIndex:i]);
}

正在打印字符的整数值。

答案 1 :(得分:0)

可能是您的阿拉伯语单词代码中存在一些空格,这是我的代码运行正常

 NSString *str =@"رونالدينهو : الكرة الذهبية الخامسة لميسي رائعه و هي من ضمن تلك الأشياء التي تُعطيني سعاده اكث";
NSLog(@"myStxt>>%@<<", [str substringToIndex:1]);
NSLog(@"myStxt>>%@<<", [str substringToIndex:2]);

调试的: myStxt&GT;&GT;ر&LT;&LT;

myStxt&GT;&GT;رو&LT;&LT;

答案 2 :(得分:0)

您是否尝试逐个打印字符串的所有字符,结果是什么?您是否尝试打印前五个字符,以便您有机会唯一标识输入的哪一部分已打印?

目前我只能猜测你的弦是拉丁语和阿拉伯语的混合物(如中间的冒号所示),并且字符串的开头远不在你认为的地方。

当然,如果您的文字行以CR或LF分隔,则第一个字符是您在第一行右侧看到的字符。删除CR和LF后,仍然成为第一个字符。所以代码很可能没有错;但你的期望是错误的。