CHCSVParser, 用于 Objective C的合适的CSV解析器

CHCSVParser, 用于 Objective C的合适的CSV解析器


#CHCSVParser

CHCSVParser 是用于CSV文件的objective-c 解析器。

##Supported 平台

  • Mac OS X 10.7 +
  • iOS 6 +

##Usage

为了使用 CHCSVParser,你需要在项目中包含以下两个文件:

  • CHCSVParser.h
  • CHCSVParser.m

CHCSVParser 需要 arc 。

类似,###Parsing 与非常相似,因为它同步解析数据并调用委托回调方法让你知道已经找到了字段,或者已经完成了读回操作,或者遇到了一个语法错误。

可以通过以下三种方式之一创建 CHCSVParser:

  • 带有文件的URL
  • 使用 NSString的内容
  • NSInputStream

可以将 CHCSVParser 配置为解析其他"字符已经分离"文件格式,如"tsv"( tab ) 。 你可以在初始化过程中指定解析器的分隔符。 分隔符只能是一个字符长度,不能是任何换行符或者 " 。 另外,根据对解析器设置的选项,你可能不使用 # 。或者 = 作为分隔符

默认情况下,CHCSVParser 不会净化字段的输出;换句话说,单个字段将按照在CSV文件中找到的原样返回。 但是,如果希望清除字段( 。周围双引号,字符未转义等),则可以通过将 sanitizesFields 属性设置为 YES 来指定该字段。

CHCSVParser 还有其他属性来改变解析行为:

  • recognizesBackslashesAsEscapes 允许你解析带分隔符的文件,其中使用反斜杠转义特殊字符( 分隔符,换行符等) 。 启用这里选项时,你不能将反斜杠用作分隔符。 默认情况下禁用这里选项。

  • recognizesComments 将跳过使用 octothorpe ( # )的解析字段。 这些字段作为注释向解析器委托报告,并且注释以未转义的换行符结束。 默认情况下禁用这里选项。

  • recognizesLeadingEqualSign 允许引用字段以 = 开头。 某些程序使用前导等号表明应明确解释字段的内容,不应删除不重要的数字。 默认情况下禁用这里选项。

###Writing CHCSVWriter 有几种构造CSV文件的方法:

-writeField: 接受对象并将它的-description ( 经过正确的转义) 写入CSV文件。 如果必要,它还将写入字段分隔符( , ) 。 你可以传递空字符串( @"" ) 或者 nil 来写入空字段。

-finishLine 用于终止当前的CSV行。 如果不调用 -finishLine,那么所有的CSV字段都将在一行中。

-writeLineOfFields: 接受对象的array,将每个对象发送到 -writeField:,然后调用 -finishLine

-writeComment: 接受一个字符串并将它的作为csv样式注释写入到文件中。

如果希望直接将CSV写入 NSString,应该创建一个 NSOutputStream 来写入内存,并将它的用作 CHCSVWriter的输出流。 有关如何执行这里操作的示例,请参见 -[NSArray(CHCSVAdditions) CSVString] 鏂规碜。

CHCSVParser 一样,CHCSVWriter 可以在初始化期间使用除 , 之外的分隔符进行定制。

###Convenience 方法

NSArrayNSString 上有两种分类方法来简化分隔文件的常见读写。

另外,便利api允许额外的解析选项,除了 CHCSVParser 所提供的。 当你指定 CHCSVParserOptionUsesFirstLineAsKeys 选项,解析将返回 CHCSVOrderedDictionary 实例的array,而不是字符串数组的array 。

CHCSVOrderedDictionary 是一个 NSDictionary 子类,它维护对它的key-value 对的特定顺序,并允许你按索引查找键和值。

##Data 编码 CHCSVParser 依赖于知道内容的编码。 如果你能提供什么编码,它应该能处理几乎任何类型的文件编码。 CHCSVParser 将尝试从这些选项中猜出文件的编码:

  • macOS Roman ( NSMacOSRomanStringEncoding ;默认/回退编码)
  • UTF-8 ( NSUTF8StringEncoding )
  • UTF-16BE ( NSUTF16BigEndianStringEncoding )
  • UTF-16LE ( NSUTF16LittleEndianStringEncoding )
  • UTF-32BE ( NSUTF32BigEndianStringEncoding )
  • UTF-32LE ( NSUTF32LittleEndianStringEncoding )
  • ISO 2022-KR ( kCFStringEncodingISO_2022_KR )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值