像正则表达式一样的东西

时间:2009-04-23 15:23:34

标签: objective-c

是否有类似于objective-c的正则表达式?

我需要一种简单的方法来通过以下一组字符来分隔元素:

"\n"
", "
"; "

目前我有以下代码:

NSMutableArray *translations = [ [NSMutableArray alloc] init];
NSArray *temp_array1 = [ [translationsView text] componentsSeparatedByString:@"\n"];

for (int i = 0; i < [temp_array1 count]; i++)
{
    NSArray *temp_array2 = [ [temp_array1 objectAtIndex: i] componentsSeparatedByString:@", "];
    for (int j = 0; j < [temp_array2 count]; j++)
    {j]);
        [translations addObject: [temp_array2 objectAtIndex: j] ];
    }
}

但我也希望实现对“;”分隔符的支持。如果我打算以同样的方式做到这一点,那么它将成为复杂的方式。

是否有更简单的方法来实现这一目标?

提前谢谢。

1 个答案:

答案 0 :(得分:4)

我想你会想看看RegexKit Framework

  

RegexKit是一个Objective-C框架   对于正则表达式:

     
      
  • 支持Mac OS X Cocoa和GNUstep。 Mac OS X 10.4或更高版本   必需的。
  •   
  • Mac OS X Universal Binary,包括Mac OS X 10.5上的64位支持。
  •   
  • 不需要进行细分。无缝地为所有人添加正则表达式支持   NSArray,NSData,NSDictionary,NSSet,   和NSString Foundation对象   丰富的Objective-C类集   加法。
  •   
  • 启用Unicode。对NSString对象的完全Unicode支持。
  •   
  • 广泛,高质量的文档。
  •   
  • 具有BSD许可证的完整源代码。
  •   
  • 使用BSD许可的PCRE Perl兼容正则表达式库   用于正则表达式引擎。
  •   
     

调整为高性能,包括   如下功能:

     
      
  • 缓存正则表达式的编译形式以获得速度。
  •   
  • 多线程安全,包括多个读者,单个写入者   多线程访问已编译的   正则表达式缓存。
  •   
  • 使用最少的堆存储(即malloc()和free())   分配大多数临时缓冲区需求   动态地来自堆栈。
  •   
  • 直接在Mac OS X上使用Core Foundation以获得更高的速度。
  •   
     

包括对Mac OS X 10.5的支持   豹:

     
      
  • 64位支持。预先构建为ppc,ppc64,i386和x86_64。
  •   
  • 启用垃圾收集。完全支持Leopards垃圾   收集功能。
  •   
  • 集成的Xcode 3.0文档。通过获取实时API信息   研究助理。
  •   
  • Instruments.app。的文书集。
  •   
  • RegexKit特定的DTrace探测点。
  •