当我输出一个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