TStringHelper.Split
作为对泛型的支持,TStringHelper.Split方法理所应当地出现了。
示例代码1:
var
iText: string;
iAStr: TArray<string>;
I: Integer;
begin
iText := ‘白内障超声乳化/白内障小切口/ECCE/人工晶体植入术/翼状胬肉切除/角膜缘干细胞移植术/青
光眼手术/眼睑内翻矫正术/泪囊置管术/鼻腔泪囊吻合术’;
iAStr := iText.Split(['/'], TStringSplitOptions.None);
for I := Low(iAStr) to High(iAStr) do
ListBox1.Items.Add(iAStr[I]);
end;
代码执行后的结果(显示在ListBox1中):
白内障超声乳化
白内障小切口
ECCE
人工晶体植入术
翼状胬肉切除
角膜缘干细胞移植术
青光眼手术
眼睑内翻矫正术
泪囊置管术
鼻腔泪囊吻合术
成功分割字符串。在测试字符串的首尾都没有'/'。
示例代码2:
var
iText: string;
iAStr: TArray<string>;
I: Integer;
begin
iText := ‘白内障超声乳化’;
iAStr := iText.Split(['/'], TStringSplitOptions.None);
for I := Low(iAStr) to High(iAStr) do
ListBox1.Items.Add(iAStr[I]);
end;
代码执行后的结果(显示在ListBox1中):
白内障超声乳化
虽然没有出现'/',但是返回了整个字符串。其中,TStringSplitOptions的两个值:None和ExcludeEmpty没有在这个例子中看出区别,易博龙也很不厚道,在其官方帮助中也没有找到关于这两个值的具体用法。究其英文意思,None不会排除空字符(''),ExcludeEmpty则会排除空字符('')。
注意:
Split方法不会改变字符串本身;Split有多个重载方法,其中亦可以指定取字符串的数量。
示例代码3:
var
iText: string;
iAStr: TArray<string>;
I: Integer;
begin
iText := '';
iAStr := iText.Split(['/'], TStringSplitOptions.ExcludeEmpty);
ListBox3.Items.Add('Low = '+Low(iAStr).ToString);
ListBox3.Items.Add('High = '+High(iAStr).ToString);
for I := Low(iAStr) to High(iAStr) do
ListBox1.Items.Add(iAStr[I]);
end;
我的代码中出现了示例代码3的情况,程序从DB Field中读取出来的内容是''字符串时,我原以为iAStr仍会被赋值(iAStr[0]=''),为了验证,我写了示例代码3。ListBox1中的显示结果:
Low = 0
High = -1
这个结果出乎我意料,但说明了之后的for循环不会进行,也就很好说明了我项目代码中所担心的问题不会发生。之所以我所担心的问题不会发生是因为参数“TStringSplitOptions.ExcludeEmpty”,它排除了''字符串,所以不会给泛型字符串数组iAStr赋值。
TStringHelper.Split的更多相关文章
- Delphi分割字符串函数Split源码
function TStringHelper.Split(const Separator: array of string; Count: Integer; Options: TStringSplit ...
- Delphi TStringHelper用法详解
Delphi TStringHelper用法详解 (2013-08-27 22:45:42) 转载▼ 标签: delphi_xe5 it 分类: Delphi Delphi XE4的TStringHe ...
- Delphi XE4 TStringHelper用法详解
原文地址:Delphi XE4 TStringHelper用法详解作者:天下为公 Delphi XE4的TStringHelper,对操作字符串进一步带来更多的方法,估计XE5还能继续用到. Syst ...
- 表值函数与JS中split()的联系
在公司用云平台做开发就是麻烦 ,做了很多功能或者有些收获,都没办法写博客,结果回家了自己要把大脑里面记住的写出来. split()这个函数我们并不陌生,但是当前台有许多字段然后随意勾选后的这些参数传递 ...
- join和split的区别
join() 方法用于把数组中的所有元素放入一个字符串.元素是通过指定的分隔符进行分隔的. <script> var a=new Array(); a[0]="XHTML&quo ...
- c#使用Split分割换行符 \r\n
c# 使用Split分割 换行符,方法如下(其余方法有空再添加): string str = "aa" + "\r\n" + "bb"; ...
- JavaScript中的slice,splice,substr,substring,split的区别
万恶的输入法,在sublime中会显示出繁体字,各位看官见谅. 1.slice()方法:该方法在数组和string对象中都拥有. var a = [1,2,3,4,5,6]; var s = 'thi ...
- split和join的用法
第一点:split 直接举例子,比较直观, >>> f = 'www.baidu.com.cn' >>> f.split()['www.baidu.com.cn'] ...
- [LeetCode] Split Array Largest Sum 分割数组的最大值
Given an array which consists of non-negative integers and an integer m, you can split the array int ...
随机推荐
- 877. Stone Game
问题 有偶数堆石头(数组长度为偶数),每堆石头有一些石头(数组元素为正),石头的总数是奇数.Alex和Lee两个人轮流取石头堆,每次可以从头部或尾部取,Alex先取. 给定这样一个数组,两人都以最优策 ...
- C++中去掉string字符串中的\r\n等
string imagedata;imagedata = “dudau\r\ndadafca\r\n” CString Image; Image = imagedata.c_str(); Image. ...
- JAVA面试题整理(4)-Netty
1.BIO.NIO和AIO 2.Netty 的各大组件 3.Netty的线程模型 4.TCP 粘包/拆包的原因及解决方法 5.了解哪几种序列化协议?包括使用场景和如何去选择 6.Netty的零拷贝实现 ...
- 20145309《Java程序设计》第七周学习总结
教材学习内容总结 第13章 时间与日期 13.1 认识时间与日期 13.1.1 时间的度量 格林威治时间(GMT) 世界时(UT) 国际原子时(TAI) 世界协调时间(UTC) Unix时间:Unix ...
- T-shirt again
T-shirt again 标签(空格分隔): 软工实践 第一次获得小黄裳是在大一下的C++课上,见T-shirt 0.0... 这次在软工课上能再次获得小黄裳,是我没有想到的,个人觉得里面有蛮多的运 ...
- C++开学第一次作业(5.4)
开学第一次作业(5.4) 代码传送门 题目 Create a program that asks for the radius of a circle and prints the area of t ...
- 通过map文件了解堆栈分配(STM32、MDK5)--避免堆栈溢出
环境:STM32F103C8T6,MDK5 在最近的一个项目的开发中,每当调用到一个函数,程序就直接跑飞.debug跟进去看不出什么逻辑错误,但发现函数内局部变量声明之后,全局变量的值被清零,后来查看 ...
- arm-linux工具
arm-linux工具的功能如下: arm-linux-addr2line 把程序地址转换为文件名和行号.在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上 ...
- 求CRC16校验
unsigned short DialogSerial::crc_ccitt(unsigned char *q,int len){ unsigned short ccitt_table[256] = ...
- 【前端】Vue.js实现简单价格计算器
价格计算器 实现效果: 实现代码及注释: <!DOCTYPE html> <html> <head> <title>价格计算器</title> ...