當我輸出一個CFString常量的值時,例如控制檯中的地址簿標籤,輸出值爲_$!<home>!$_
。我如何只提取純價值,例如家庭?請大家非常感謝您的幫助。如何從一個常量字符串中提取純字符串
回答
並不是所有的字符串常量都有它們周圍的所有gubbins - 只是有人認爲有人認爲地址簿有這種情況。因此,我不認爲有任何內置函數可以將它們刪除。
這使得這個問題很簡單:「我如何刪除字符?」題。有這許多解決方案,但一個簡單的一種是:
NSString *label = @"_$!<home>!$_";
NSString *rawLabel = [[label stringByReplacingOccurrencesOfString:@"_$!<" withString:@""]
stringByReplacingOccurrencesOfString:@">!$_" withString:@""];
如果你顯示在你的界面屬性的名稱,使用the ABCopyLocalizedPropertyOrLabel
function或the ABPersonCopyLocalizedPropertyName
function,而不是試圖從私人implementation-提取名常數的細節值。
如果你正在做這樣的事情:
NSLog(@"%@: %@", kABURLsProperty, URLsValue);
試試這個:
//In a header
#define STRING_FROM_NAME(name) @#name
//In the implementation
NSLog(@"%@: %@", STRING_FROM_NAME(kABURLsProperty), URLsValue);
這將打印不變,這是更爲辨識的名稱,而不是私人的常量的實現 - 細節值。 (注意,由於這是一個預處理器宏,它不會跟隨變量,它只是從您作爲第一個參數傳遞的任何文本中創建一個字符串;它不會嘗試反向查找字符串。所以,如果你傳遞一個變量的名字,你會得到輸出你的變量的名稱)
下面的代碼剪斷我只是在一瞬間使用,因爲ABCopyLocalizedPropertyOrLabel
爲Mac OS X:
NSString *labelTranslation = @"";
if ([label isEqualToString:@"_$!<Home>!$_"])
labelTranslation = @"Home";
else if ([label isEqualToString:@"_$!<Mobile>!$_"])
labelTranslation = @"Mobile";
else if ([label isEqualToString:@"_$!<Work>!$_"])
labelTranslation = @"Work";
else if ([label isEqualToString:@"_$!<WorkFAX>!$_"])
labelTranslation = @"Work (Fax)";
else if ([label isEqualToString:@"_$!<Main>!$_"])
labelTranslation = @"Main";
else if ([label isEqualToString:@"_$!<HomeFAX>!$_"])
labelTranslation = @"Home (Fax)";
else if ([label isEqualToString:@"_$!<Pager>!$_"])
labelTranslation = @"Pager";
else if ([label isEqualToString:@"_$!<Other>!$_"])
labelTranslation = @"Other";
在iPhone上,改爲嘗試使用ABPersonCopyLocalizedPropertyName。 – 2009-10-20 22:27:27
尼斯彼得,刪除16行代碼,是的! :) – catlan 2009-10-20 23:50:12
使用:
NSString *label = (NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(contact, index));
- 1. 如何從字符串中提取一個字符串
- 2. 如何從另一個字符串中提取字符串php
- 3. 從一個字符串中提取兩個子字符串
- 4. 從一個字符串中提取兩個子字符串
- 5. 如何在C#中提取字符串一個字符串的
- 6. 從另一個url或字符串中提取字符串
- 7. 如何從字符串中提取字符串的第一個數字
- 8. 提取數字從一個字符串
- 9. 如何從這個字符串中提取一個子字符串?
- 10. 如何從Python中的字符串中提取子字符串?
- 11. 如何在ColdFusion中從字符串中提取子字符串?
- 12. 如何從Perl中的字符串中提取子字符串?
- 13. 如何從java中的字符串中提取子字符串
- 14. 如何從一個字符串中提取特定數量
- 15. 如何從一串字符串中獲取字符串?
- 16. 如何從字符串[email protected]中提取字符串'foo'?
- 17. 如何從較大的字符串中提取字符串?
- 18. 如何從字符串中提取子字符串?
- 19. 如何從紅寶石字符串中提取子字符串?
- 20. 如何從字符串中提取指定的字符串
- 21. 如何從字符串中提取字符串?
- 22. 如何從字符串中提取子字符串?
- 23. 如何從Eclipse中的現有常量字符串中提取常量子字符串?
- 24. 提取字符串,並從一個較大的字符串
- 25. 從另一字符串中提取字符串兩個特定字符
- 26. 從字符串中提取2個字
- 27. 如何從javascript中的字符串中提取兩個字符
- 28. 從字符串中提取字符
- 29. 從字符串中提取
- 30. 從字符串中提取幾個子字符串的方法?
謝謝。我只是假設它將是所有常量的一個特徵,而不是一個AB怪癖。 – RunLoop 2009-10-20 09:16:44