Delphi中stringlist分割字符串的用法

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

Delphi中stringlist分割字符串的用法的更多相关文章

  1. 教程-Delphi中Spcomm使用属性及用法详解

    Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...

  2. Delphi 中Format的字符串格式化使用说明(转)

    源:Delphi 中Format的字符串格式化使用说明(转) 一.Format函数的用法 Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供 ...

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

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

  4. Delphi中TxmlDocument控件的用法 转

    Delphi中对XML文件的解析做的很好,比直接使用MS的MSXML2_TLB中的接口要方便很多,现称述于下面. 在讲之前先给出一个XML实例,在讲某些部分是要结合实例比较容易理解. 1<?xm ...

  5. [转]:Delphi中Format的字符串格式化使用说明

    一.Format函数的用法 Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用: 首先看它的声明: function Forma ...

  6. Oracle分割字符串 REGEXP_SUBSTR用法

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

  7. Delphi中 弹出框的用法

    Delphi中的提示框有 Application.MessageBox  ShowMessage messagedlg 个人认为 相对来说 Application.MessageBox 更加灵活 也相 ...

  8. Tstringlist分割字符串的用法?

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaText 2.Delimiter &Delim ...

  9. Delphi中的各种字符串、String、PChar、Char数组

    参考博客:http://www.cnblogs.com/pchmonster/archive/2011/12/14/2287686.html 其中的所有代码均在Delphi7下测试通过. Delphi ...

随机推荐

  1. cglib动态新增类方法

    <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> & ...

  2. python的异常处理

    在所有的程序中,都会遇到异常,有些异常是代码编写的时候产生的,在前期过程中可能会直接导致程序无法运行.这一类的异常,在编写代码的时候,程序可以直接排查修改.但有些异常,是在程序运行过程中产生的,可能是 ...

  3. libsvm数据处理初略流程

  4. 网络请求 __ NSURLSession

    首先配置into.plist文件 1. 添加 App Transport Security Settings , Type栏自动变为Dictionary 2. 点击左边箭头,使之向下,点击右边加号,添 ...

  5. 导出(Excel格式)

    poi导出,需要的poi jar包: 步骤一.两个工具类: 1.ExcelUtil.java package util; import java.awt.Color; import java.io.F ...

  6. Python 创建本地服务器环境生成二维码

    一. 需求 公司要做一个H5手机端适配页面,因技术问题所以H5是外包的,每次前端给我们源码,我们把源码传到服务器让其他人访问看是否存在bug,这个不是很麻烦吗?有人说,可以让前端在他们的服务器上先托管 ...

  7. MySQL性能优化总结

    一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎 ...

  8. spring configuration 注解

    org.springframework.context.annotation @annotation.Target({ElementType.TYPE}) @annotation.Retention( ...

  9. OpneCv2.x 模块结构

    转自:http://blog.csdn.net/huang9012/article/details/21811271 之前啃了不少OpenCV的官方文档,发现如果了解了一些OpenCV整体的模块架构后 ...

  10. 《UML大战需求分析》阅读随笔(四)

    状态机图(State Machine Diagram),状态机图是通过描述某事物状态的改变来展现流程的.一般适用于流程围绕某个事物展开,例如请假的流程就围绕请假条的展开.语法,开始于结束符号,实心圆表 ...