首页 > 其他分享 >TStringList的用法

TStringList的用法

时间:2023-06-13 16:02:11浏览次数:34  
标签:aaa TStringList bbb 用法 strs Delimiter constr ddd


TStringList的用法


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 

标签:aaa,TStringList,bbb,用法,strs,Delimiter,constr,ddd
From: https://blog.51cto.com/guosisoft/6471004

相关文章

  • mysql数据库备份及恢复命令mysqldump,source的用法
    还原一个数据库:mysql-hlocalhost-uroot-p123456www<c:/www.sql备份一个数据库:mysqldump-hlocalhost-uroot-p123456www>d:/www2008-2-26.sql  //以下是在程序中进行测试//$command="mysqldump--opt-h$dbhost-u$dbuser-p$dbpass$dbname|gzip>$backup......
  • stream().filter()的用法
    stream().filter()的用法平时我们会经常看到stream().filter()的方式去查询数据stream.filter一般适用于list集合,主要作用就是模拟sql查询,从集合中查询想要的数据。filter里面的参数user是指集合里面的每一项我们来一个简单的示例就能看懂他的用法了publicclassStreamTest{......
  • 关于iotop-磁盘IO分析工具的非交互式的用法
    对于iotop命令,默认同top命令模式一样,是交互式模式,实时输出如果我们需要输出到日志文件中,进行分析,可能更多的情况是是需要使用非交互式模式刚好iotop命令,可以使用-b选项,进行非交互模式,然后每隔一秒输出一次所有进程-线程对磁盘IO的使用情况关于iotop命令的先项,本文以在RedHatE......
  • C++面试八股文:static和const的关键字有哪些用法?
    C++面试八股文:static和const的关键字有哪些用法?某日二师兄参加XXX科技公司的C++工程师开发岗位第7面:面试官:C++中,static和const的关键字有哪些用法?二师兄:satic关键字主要用在以下三个方面:1.用在全局作用域,修饰的变量或者函数为静态的,限制在本文件内使用。2.方法内修饰修饰静......
  • python中zip的用法
     001、>>>a=[1,2,3]>>>b=[4,5,6]>>>c=[7,8,9,10,11]##测试列表>>>list(zip(a,b))[(1,4),(2,5),(3,6)]>>>list(zip(a,c))##返回列表元祖[(1,7),(2,8),(3,9)]  002、>>......
  • java的`pageContext`对象`attributes`的属性用法和原理
    在Java中,pageContext.setAttribute("name","liulongteng",SESSION)方法用于在页面上下文(pageContext)中设置属性。属性名为"name",属性值为"liulongteng",并且属性的作用范围为SESSION(会话级别)。在JSP中,页面上下文对象(pageContext)是一个重要的对象,它提供了对其他域(如请求、会......
  • MySQL闪回工具简介 及 binlog2sql工具用法
    一、闪回工具简介1.工具分类第一类以patch形式集成到官方工具mysqlbinlog中优点上手成本低。mysqlbinlog原有的选项都能直接利用,只是多加了一个闪回选项,未来有可能被官方收录。支持离线解析。缺点兼容性差、项目活跃度不高。难以添加新功能,实战效果欠佳。安装麻烦。需要对m......
  • python的shell用法
    python的shell用法python[-bBdEhiIOqsSuvVWx?][-ccommand|-mmodule-name|script|-][args]Python-mpython-mmodule名args检索对应的模块名去执行,对于一个普通的模块,可能下面两种写法实际上是等效的:python-mtestpythontest.py两种写法都是将对应的py文......
  • Magick.NET跨平台压缩图片的用法
    //首先NuGet安装:Magick.NET.Core,Magick.NET-Q16-AnyCPUusingImageMagick;///<summary>///压缩图片///</summary>///<paramname="imageData">图片字节流</param>///<paramname="maxWidth"&......
  • 解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法
    对象的属性其实就是数据,存放在堆中;而对象的行为(方法),就是运行逻辑,放在栈中堆区:专门用来保存对象的实例(new创建的对象和数组),实际上也只是保存对象实例的属性值,属性的类型和对象本身的类型标记等,并不保存对象的方法(方法是指令,保存在Stack中)1.存储的全部是对象,每个对象都包含一个与......