delphi中内置的字符串分割函数已经很强大了,能够满足我们基本的使用需要。主要有两种:
ExtractStrings(Separators: TSysCharSet; WhiteSpace: TSysCharSet; Content: PAnsiChar; Strings: TStrings): Integer;
Separators 参数指定一组分割符,所有的子串都是用它们分割的。但是成对的引号内的分割符会被忽略。
WhiteSpace 参数指定每个子串开头被忽略的字符s。
Content 参数就是被分割的“源”串了。
Strings 参数用于接收分割后的各个子串。它的原有内容不会被清空。
该函数的特点是能够自动除去空字符,即''。大多数情况下是很好的,但是如果我么需要这些空字符时就很麻烦了(如导数据库,空字符串代表一个可Null的字段),因此可以用TStringlist的分割方法:
Delimiter:指定分割符,默认为逗号。
DelimitedText:指定需要分割的字符串,其中可以包含空字符。
但是,这个函数也有问题:它默认将空格也作为分割符,也就是说你的字符串中要是包含空格,它就会把字符串分开,也是很麻烦的。
因此,真正要适合我们的需求还是需要自己动手完善功能的,比如可以用StringReplce方法替换所有空格;对于空字符可以在拼凑源字符串时用空格代替,在分割时在用空替换等等。