我在下面。
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]);
知道为什么这会给我错误的细节吗?
第二个对象给了我这个问题,但是第三个对象正常工作。
以下代码
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...
答案 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后,仍然成为第一个字符。所以代码很可能没有错;但你的期望是错误的。