TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。
  常规的用法大家都知道,现在来讨论它的一些高级的用法。
  1、CommaText
  2、Delimiter &DelimitedText
  3、Names &Values &ValueFromIndex
  先看第一个:CommaText。怎么用呢?
  const
    constr :String = 'aaa,bbb,ccc,ddd';
  var
   strs :TStrings;
   i :Integer;
  begin
   strs := TStringList.Create;
   strs.CommaText := constr;
   for i := 0 to Strs.Count-1 do
   ShowMessage(Strs[i]);
  end;
  执行了这段代码后,可以看到ShowMessage显示出来的分别是:aaa bbb ccc ddd。
  也就是说,strs.CommaText := constr这一句的作用,
  就是把一个字符串以','为分割符,分段添加到TStrings中。
  那么如果不是以','来分割,又该怎么做呢?现在看第二个例子。使用Delimiter和DelimitedText。
  const
    constr :String = 'aaa\bbb\ccc\ddd';
  var
   strs :TStrings;
   i :Integer;
  begin
   strs := TStringList.Create;
   strs.Delimiter := '\';
   strs.DelimitedText := constr;
   for i := 0 to Strs.Count-1 do
   ShowMessage(Strs[i]);
  end;
  可以看到, 显示的效果和第一个例子是一模一样的。解释一下:
  Delimiter为分隔符,默认为:','。DelimitedText就是按Delimiter为分隔符的一个串,
  得到赋值后回把这个字符串按Delimiter的字符添加到TStrings中。
  说到这里,有想起一个属性,QuoteChar。其默认值为:'"'(不包括单引号)
  有何用呢?看例子:
  const
    constr :String = '"aaa"\"bbb"\"ccc"\"ddd"';
  var
   strs :TStrings;
   i :Integer;
  begin
   strs := TStringList.Create;
   strs.Delimiter := '\';
   strs.DelimitedText := constr;
   for i := 0 to Strs.Count-1 do
   ShowMessage(Strs[i]);
  end;
  显示出来的仍然是aaa bbb ccc ddd。为什么不是:"aaa" "bbb" "ccc" "ddd"呢?
  再来看一个例子:
  const
  constr :String = '|aaa|\|bbb|\|ccc|\|ddd|';
  var
   strs :TStrings;
   i :Integer;
  begin
   strs := TStringList.Create;
   strs.Delimiter := '\';
   strs.QuoteChar := '|';
   strs.DelimitedText := constr;
   for i := 0 to Strs.Count-1 do
   ShowMessage(Strs[i]);
  end;
  显示出来的又是aaa bbb ccc ddd。对比一下,应该不难明白吧?这个就不多说了,用得也不多。
  但是还要多说一句,当Delimiter为:','而QuoteChar为:'"'时,
  DelimitedText和CommaText是同等的。
  最后要说的三个是:Names &Values &ValueFromIndex。
  看看下面的代码:
  const
    constr :String = '0=aaa,1=bbb,2=ccc,3=ddd';
  var
   strs :TStrings;
   i :Integer;
  begin
   strs := TStringList.Create;
   strs.CommaText := constr;
   for i := 0 to strs.Count-1 do
   begin
   ShowMessage(strs.Names[i]);
   ShowMessage(strs.Values[strs.Names[i]]);
   ShowMessage(strs.ValueFromIndex[i]);
   end;
  end;
  通过这个例子不难看出:
  这个时候strs中的内容是:
  0=aaa
  1=bbb
  2=ccc
  3=ddd
  而Names中则是:
  0
  1
  2
  3
  在Values中则是:
  aaa
  bbb
  ccc
  ddd

Tstringlist分割字符串的用法?的更多相关文章

  1. Delphi中stringlist分割字符串的用法

    Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaT ...

  2. Android--split()分割字符串特殊用法

    split()分割字符串 1.不同环境下的区分 Java:分割字符串不能写成split("$")//$为要分割的字符Android:分割字符串需要加上中括号split(" ...

  3. Oracle分割字符串 REGEXP_SUBSTR用法

    分割字符串中所有指定字符,然后成多行参数说明,参数1: 待分割字符串参数2:正则表达式参数3:起始位置,从第几个字符开始正则表达式匹配(默认为1)参数4:标识第几个匹配组,默认为1参数5:模式('i' ...

  4. C# Split的用法,Split分割字符串

    C# Split的用法,Split分割字符串 分割单个字串:string str="来自张三的亲切问候!;string[] strarry=str.Split(new string[] { ...

  5. C#的String.Split 分割字符串用法详解的代码

    代码期间,把代码过程经常用的内容做个珍藏,下边代码是关于C#的String.Split 分割字符串用法详解的代码,应该对码农们有些用途. 1) public string[] Split(params ...

  6. JavaScript中字符串分割函数split用法实例

    这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaSc ...

  7. 笔记:iOS字符串的各种用法(字符串插入、字符串覆盖、字符串截取、分割字符串)(别人的代码直接复制过来的,我脸皮有点厚)

    NSString* str=@"hello";//存在代码区,不可变 NSLog(@"%@",str); //1.[字符串插入] NSMutableString ...

  8. iOS字符串的各种用法(字符串插入、字符串覆盖、字符串截取、分割字符串)

    NSString* str=@"hello";//存在代码区,不可变 NSLog(@"%@",str); //1.[字符串插入] NSMutableString ...

  9. C语言分割字符串

    最近在做一道C语言题目的时候需要用到分割字符串,本来想自己手写的,也不会很麻烦,但想到其他语言都有分割字符串的库函数,C语言怎么会没有呢?所以,在网上搜了一搜,果然有这样的函数,还是很好用的,在此总结 ...

随机推荐

  1. 面试问题4:C语言预处理包括哪些

    问题描述:C语言 预处理包括哪些操作 C语言的三种预处理包括:宏定义(#define).文件包含(#include).条件编译(#if.#else.#endif). 对于宏定义的介绍: 宏定义必须写在 ...

  2. Asp.net中实现同一用户名不能同时登录(单点登录)

    Web 项目中经常遇到的问题就是同一用户名多次登录的问题,相应的解决办法也很多,总结起来不外乎这几种解决办法: 将登录后的用户名放到数据库表中: 登录后的用户名放到Session中: 登录后的用户名放 ...

  3. SAE上传文件到storage

    还有什么比代码更清晰的讲解 html代码: 一定需要下面这个: method="post" enctype="multipart/form-data" < ...

  4. git技巧记录--子模块删除方法

    把子模块推进去了,删掉吧(将子模块删除,然后提交推送),删除子模块步骤: 1.在Platform.Web库下,右键->Git Bash,进入git命令行窗口,输入:git rm –-cached ...

  5. Java Se :线性表

    Java的集合框架分为两个系列,Collection和Map系列.在大学期间,学习数据结构时,好像学习了线性表.非线性表.树,哎,都给忘了.其实,在Collection系列内部又可以分为线性表.集合两 ...

  6. Sql Server之旅——第一站 那些给我们带来福利的系统视图

    本来想这个系列写点什么好呢,后来想想大家作为程序员,用的最多的莫过于数据库了,但是事实上很多像我这样工作在一线的码农,对sql 都一知半解,别谈优化和对数据库底层的认识了,我也是这样... 一:那些系 ...

  7. spring 依赖注入(IOC DI)

    依赖注入(IOC DI) 依赖注入的两种方式: 1. set注入 Spring要求使用set注入方式的时候,Bean需要提供一个无参数的构造方法.并提供一个属性的setter方法.例如: packag ...

  8. 【密码】Oracle用户密码系列

    [密码]Oracle用户密码系列 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...

  9. IDENT_CURRENT ,@@identity,SCOPE_IDENTITY() 之间对比

    获取表的标识值,有3种比较常见的用法 IDENT_CURRENT ,@@identity,SCOPE_IDENTITY(),有啥不一样呢? 3个关键字在联机手册中的解释   IDENT_CURRENT ...

  10. 中科院分词ICTCLAS5.0_JNI 使用方法

    1.简介 中国科学院计算技术研究所在多年研究基础上,耗时一年研制出了基于多层隐码模型的汉语词法分析系统 ICTCLAS(Institute of Computing Technology, Chine ...