我有一個包含以下UTF-8 Unicode字符的NSString實例(我們稱之爲myString
):\xc2\x96
(即在MS Word中看到的很長的短劃線)。在NSString實例中替換給定unicode字符的正確方法是什麼?
當打印的NSString使用NSLog
和%@
格式說明控制檯,性格是由這表明什麼是錯的倒問號代替 - 使用它作爲文本在表格單元格,Unicode字符時,和只是顯示爲空格(不是空字符串 - 空格)。
爲了解決這個問題,我想用一個「普通」破折號取代\xc2\x96
unicode角色 - 起初我以爲這應該是10秒。任務,但經過一些研究後,我還沒有找到「正確的方法」來做到這一點,這是我希望得到你的幫助的地方。
我曾嘗試:
當我在這樣NSLog(@"%x", myString)
我得到的十六進制值十六進制打印myString
:96
爲代表的Unicode字符\xc2\x96
Unicode字符。
使用這個信息,我已經做了以下實施其「正常」衝刺相當於替換:
for(int index = 0; index < [myString length]; index++)
{
NSLog(@"Hex:'%x' Char:'%c'", [myString characterAtIndex:index],[myString characterAtIndex:index]);
if([[NSString stringWithFormat:@"%x", [myString characterAtIndex:index]] isEqualToString:@"96"])
myString = [myString stringByReplacingCharactersInRange:NSMakeRange(index, 1) withString:@"-"];
}
...它的工作原理,但我的眼睛不喜歡它,我想要知道這是否能以更清潔和「正確」的方式完成?例如。像C#的String.Replace(char,char)
which supports unicode characters。
所以包裹起來:
我在尋找「正確的方法」來替換字符串的unicode字符 - 我做了一些研究,但顯然,只有方法可用來替換出現給定NSString
與另一個NSString
。
我已閱讀以下內容:
- https://stackoverflow.com/a/5223737/700926
- https://stackoverflow.com/a/5217703/700926
- https://stackoverflow.com/a/714009/700926
- https://stackoverflow.com/a/668254/700926
- https://stackoverflow.com/a/2039396/700926
...但他們都解釋瞭如何用另一個NSString
替換給定的NSString
,並沒有介紹如何替換特定的Unicode字符(特別是雙字節)。
輝煌 - 謝謝!我是新的Objective-C編程,所以我很高興專業人士願意幫助;) –
不客氣:) – 2012-09-18 18:37:02