`
woxiaoe
  • 浏览: 283265 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Delphi中的字符串分割

阅读更多

今天偶尔要做的Delphi程序,其中涉及到了字符串处理,里面有一个功能类似于VB里的split()函数的功能,于是查了很久才查到些资料,现将这些资料整理一下,方便大家.

首先是一个网友自己编的函数.实现了和split()函数的功能.

 unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type userarray=array of string;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    function split(s: string; dot: char): userarray;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses StrUtils;

{$R *.dfm}
//按所给字符将字符串分隔成数组
function TForm1.split(s:string;dot:char):userarray;
var
str:userarray;
i,j:integer;
begin
i:=1;
j:=0;
SetLength(str, 255);

while Pos(dot, s) > 0 do    //Pos返回子串在父串中第一次出现的位置.
begin
str[j]:=copy(s,i,pos(dot,s)-i);
i:=pos(dot,s)+1;
s[i-1] := chr(ord(dot)+1);
j:=j+1;
end;
str[j]:=copy(s,i,strlen(pchar(s))-i+1);
result:=str;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  ur:userarray;
  i:Integer;
begin
  ur:=split(Edit1.Text,';');
  for i :=0 to 255 do
  begin
    if length(ur[i])=0 then Exit;
    ShowMessage(ur[i]);
  end;

end;

end.

说明,测试这个代码时请在窗体上放一个文本编辑框和一个按钮,字符串是以';'号分割的;

第二种方法比较简单:

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 

http://blog.csdn.net/mc1035/archive/2007/05/16/1611214.aspx

分享到:
评论

相关推荐

    delphi字符串分割示例源码

    本文将深入探讨Delphi中的字符串分割技术,通过一个具体的示例源码来展示如何实现这一功能。 Delphi 是一个强大的Windows应用程序开发环境,它基于Pascal编程语言。在Delphi中,我们通常使用内置的字符串类型`...

    delphi字符串按字符串分割

    在Delphi编程环境中,处理字符串是一项常见的任务,而“按字符串分割”是字符串操作中的一个核心功能。在Delphi中,我们可以使用内建的函数或类来实现这一操作,例如`SplitString`函数或者`TStringList`类。本文将...

    delphi7分割字符串

    本文将详细讲解如何在Delphi 7中进行字符串分割,以满足不同需求。 首先,我们需要了解Delphi 7中的字符串类型。在Delphi中,基本的字符串类型是`string`,它实际上是基于Pascal的`AnsiString`实现的,支持Unicode...

    delphi 实现截取字符串中中文+英文混合截取

    在Delphi编程环境中,处理中文和英文混合的字符串截取是一项常见的任务,特别是在涉及到文本处理、数据解析或者用户界面展示时。由于Unicode编码的存在,中文字符通常占据两个字节,而英文字符则占据一个字节,这就...

    delphi字符串分割函数整理

    ### Delphi字符串分割函数整理 在Delphi编程环境中,字符串处理是极其常见且重要的操作之一。对于字符串的分割尤其在数据解析、配置文件读取等场景下应用广泛。本文将详细整理并解释几种常用的字符串分割函数及其...

    delphi之分割字符串

    `SplitString`函数是`System.StrUtils`单元中的成员,它可以基于指定的分隔符将字符串分割成一个字符串列表。例如: ```delphi uses System.SysUtils, System.StrUtils; var OriginalString, Delimiter: ...

    Delphi字符串16进制互相转换

    在Delphi中,16进制字符串转换为整数或字节数组,以及将整数或字节数组转换为16进制字符串,有多种方法。我们可以使用系统提供的函数,如`Hex`和`IntToHex`来进行转换。 1. **16进制字符串转整数**: - 使用`...

    DELPHI分割字符串

    // 清除字符串中的内容 if Length(s) = 0 then // 长度为0 Exit; p := Pos(Separator, s); while P <> 0 do begin hs := Copy(s, 1, p - 1); // 复制字符 Terms.Add(hs); // 添加到列表 Delete(s, 1, p + ...

    Delphi字符串快速替换函数,速度超快 秒杀自带的StringReplace函数

    3. **多线程处理**:对于非常大的字符串,可以将字符串分割成多个部分并使用多线程进行并行替换,从而利用多核处理器的优势。 4. **避免不必要的复制**:在替换过程中,只复制必要的字符,而不是整个字符串。 `Q_...

    delphi分割字符串去空串.txt

    根据给定的文件信息,我们可以总结出以下关于 Delphi 分割...通过以上分析,我们可以看出该函数实现了一种较为常见的字符串分割操作,并且在处理过程中注意到了空字符串的情况,从而确保了返回结果的有效性和准确性。

    DELPHI7一个简单的字符拆分

    在Delphi编程环境中,字符拆分是一个常见的任务,特别是在处理字符串和数据操作时。"DELPHI7一个简单的字符拆分"这个标题所指的就是在Delphi 7中实现一个功能,将一个字符串按照特定规则分解成多个子字符串。描述中...

    通过TStringList分割字符串

    在Delphi编程环境中,我们经常会遇到需要处理字符串集合的情况,特别是在数据处理、文件解析或用户界面展示时。这里,我们将探讨如何使用`TStringList`类来分割由特定字符(如分号)隔开的字符串,并将结果在`...

    delphi 任意分解字符串

    - 在每次循环中,使用`Pos`函数定位特殊分割字符串在当前源字符串中的位置,并据此截取子串。 - 更新`iCutCount`计数器,直到达到所需的索引位置。 ```delphi iCutCount := 1; while iCutCount begin i :=...

    高效中英文字符串截取方法

    ### 高效中英文字符串截取方法 #### 知识点概述 本文将详细介绍一种用于高效截取中英文混合字符串的方法。该方法适用于处理大量数据(例如10万条记录),能够在极短的时间内(例如1秒)完成所需的操作。这种方法...

    delphi源码分割字符串按级分割及按级分割后创建文件夹

    例如: 字符串: D:\受理图片\A01F201103\ 完全分割: D: 受理图片 A01F201103 按级分割: D: D:\受理图片 D:\受理图片\A01F201103 D:\受理图片\A01F201103\ 按级分割后创建文件夹

    二次分割字符串

    例如,在Delphi中,我们可以使用`StringList`类的`DelimitedText`属性结合`CommaText`来实现以逗号为分隔符的字符串分割: ```delphi var Str: string; List: TStrings; begin Str := 'apple,banana,grape'; ...

    逗号字符串识别

    例如,Java中的`StringTokenizer`,JavaScript的`split()`,或Delphi(根据提供的文件名可能是使用的编程环境)中的`SplitString`函数等,都可以用来处理逗号字符串。 6. **文件处理**: 在处理CSV文件时,除了...

    delphi流相互转换

    3. 分割该字符串,创建`TList<String>`的元素。 ### 4. `TList<String>` 转 `stringstream (TStringStream)` 这个转换同样直观: 1. 创建一个`TStringStream`实例。 2. 遍历`TList<String>`,将每个字符串写入`...

    mooc_bj_2020_sqlite3_自动学习_数据存储_delphi源码_字符串处理_

    “字符串处理”则是指在编程中对文本字符串的操作,如查找、替换、分割、格式化等常见任务。 根据这些信息,我们可以预期课程内容可能包括以下部分: 1. SQLite3简介:介绍SQLite3的基本概念、架构和特性,以及为...

    delphi 字符截取 代码文档

    `这行代码会将`constr`字符串按照逗号分割,并将结果分别存入`TStringList`的各个元素中。在提供的代码中,`ShowMessage`将依次显示`aaa`、`bbb`、`ccc`和`ddd`。 如果分隔符不是逗号,我们可以使用`Delimiter`属性...

Global site tag (gtag.js) - Google Analytics