NSString 用法2

1 合并一个字符串数组到单个字符串。

  1. NSArray *chunks = ... get an array, say by splitting it;
  2. string = [chunks componentsJoinedByString: @" :-) "];

输出结果如下:

  1. oop :-) ack :-) bork :-) greeble :-) ponies

2 将一个字符串分割成数组

  1. NSString *string = @"oop:ack:bork:greeble:ponies";
  2. NSArray *chunks = [string componentsSeparatedByString: @":"];

3 将字符串转换成整型数

  1. NSString *string = ...;
  2. int value = [string intValue];

同样NSString也有floatValue和doubleValue的方法。

4 遍历属性字符串(Attributed string)中的属性
如下函数可以打印出输入的属性字符串中的所有属性

  1. - (void) iterateAttributesForString: (NSAttributedString *) string
  2. {
  3. NSDictionary *attributeDict;
  4. NSRange effectiveRange = { 0, 0 };
  5. do {
  6. NSRange range;
  7. range = NSMakeRange (NSMaxRange(effectiveRange),
  8. [string length] - NSMaxRange(effectiveRange));
  9. attributeDict = [string attributesAtIndex: range.location
  10. longestEffectiveRange: &effectiveRange
  11. inRange: range];
  12. NSLog (@"Range: %@ Attributes: %@",
  13. NSStringFromRange(effectiveRange), attributeDict);
  14. } while (NSMaxRange(effectiveRange) < [string length]);
  15. }

5 制作本地化的字符串
你需要在English.lproj目录(或其他合适的本地化目录)中有一个名为Localizable.strings的文件。它有如下的语法:

  1. "BorkDown" = "BorkDown";
  2. "Start Timer" = "Start Timer";
  3. "Stop Timer" = "Stop Timer";

也就是,每个键值都有一个本地化的值。

在代码中,可以使用NSLocalizedString()或其变种。

  1. [statusItem setTitle: NSLocalizedString(@"BorkDown", nil)];

其中该函数忽略了第二个参数。

6 无多余信息的NSLog
NSlog在日志行之前输出了太多无关信息。对于一个用于输出的基础工具,它确实有点碍事。不过我仍然和喜欢printf()系列所不能的%@展开替换。如下是可以实现该功能的代码:

  1. #include <stdarg.h>
  2. void LogIt (NSString *format, ...)
  3. {
  4. va_list args;
  5. va_start (args, format);
  6. NSString *string;
  7. string = [[NSString alloc] initWithFormat: format arguments: args];
  8. va_end (args);
  9. printf ("%s\n", [string cString]);
  10. [string release];
  11. }

 

你可能感兴趣的:(NSString)