作为对泛型的支持,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的更多相关文章

  1. Delphi分割字符串函数Split源码

    function TStringHelper.Split(const Separator: array of string; Count: Integer; Options: TStringSplit ...

  2. Delphi TStringHelper用法详解

    Delphi TStringHelper用法详解 (2013-08-27 22:45:42) 转载▼ 标签: delphi_xe5 it 分类: Delphi Delphi XE4的TStringHe ...

  3. Delphi XE4 TStringHelper用法详解

    原文地址:Delphi XE4 TStringHelper用法详解作者:天下为公 Delphi XE4的TStringHelper,对操作字符串进一步带来更多的方法,估计XE5还能继续用到. Syst ...

  4. 表值函数与JS中split()的联系

    在公司用云平台做开发就是麻烦 ,做了很多功能或者有些收获,都没办法写博客,结果回家了自己要把大脑里面记住的写出来. split()这个函数我们并不陌生,但是当前台有许多字段然后随意勾选后的这些参数传递 ...

  5. join和split的区别

    join() 方法用于把数组中的所有元素放入一个字符串.元素是通过指定的分隔符进行分隔的. <script> var a=new Array(); a[0]="XHTML&quo ...

  6. c#使用Split分割换行符 \r\n

    c# 使用Split分割 换行符,方法如下(其余方法有空再添加):   string str = "aa" + "\r\n" + "bb"; ...

  7. JavaScript中的slice,splice,substr,substring,split的区别

    万恶的输入法,在sublime中会显示出繁体字,各位看官见谅. 1.slice()方法:该方法在数组和string对象中都拥有. var a = [1,2,3,4,5,6]; var s = 'thi ...

  8. split和join的用法

    第一点:split 直接举例子,比较直观, >>> f = 'www.baidu.com.cn' >>> f.split()['www.baidu.com.cn'] ...

  9. [LeetCode] Split Array Largest Sum 分割数组的最大值

    Given an array which consists of non-negative integers and an integer m, you can split the array int ...

随机推荐

  1. Lua 可控下标数组遍历

    , , , , , , , , , , , } , , } local j = 1 while i <= #aaa do if bbb[j] == aaa[i] then -- 如果 b下标元素 ...

  2. CCProgressTimer Loading条

    CCProgressTimer *p_SpTime = CCProgressTimer::create(CCSprite::createWithSpriteFrameName("IM_Pro ...

  3. window连接linux共享

    前提说明:windows主机信息:192.168.1.100 帐号:abc 密码:123 共享文件夹:sharelinux主机信息:192.168.1.200 帐号:def 密码:456 共享文件夹: ...

  4. Java学习笔记之对象的复制和克隆

    假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short, ...

  5. github代码上传下载慢问题

    绑上下面的host,实测下载速度可提高2倍左右. 151.101.72.249 github.global.ssl.fastly.net

  6. KALI LINUX系统初始化配置

    1.Kali Linux安装VirtualBox增强功能 VirtualBox增强功能介绍:物理机与虚拟机之间的文件共享.物理机与虚拟机之间的剪切板共享.虚拟机的direct3D支持,这样虚拟机窗口就 ...

  7. Mac上Homebrew的使用——Homebrew 使 OS X 更完整

    0 Homebrew是啥? “Homebrew installs the stuff you need that Apple didn’t.——Homebrew 使 OS X 更完整”. Homebr ...

  8. ubuntu 18.04在更新软件库时出现E: Release file for http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease is not valid yet...

    1.完整的错误信息如下: E: Release file for http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease i ...

  9. LeetCode——Unique Paths

    Question A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram be ...

  10. 转载:hdu 题目分类 (侵删)

    转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...