截取字符串(100)

  • 主题发起人 主题发起人 杨子
  • 开始时间 开始时间

杨子

Unregistered / Unconfirmed
GUEST, unregistred user!
1 ,13569555855 ,1 ,山东省 青岛市 四方区,465445如何把此信息拆分,每个逗号就为一个信息拆分成1135695558551山东省 青岛市 四方区465445注意的是,假如其中某个信息有可能为空,比如:1,,,2323,3
 
抚顺路11号是俺的学校
 
procedure TForm1.Button5Click(Sender: TObject);var list:TStrings; i:integer;begin list:=TStringlist.Create; list.DelimitedText:='你输入的字符串'; list.Delimiter:=',';//逗号必须是同一的,不能出现又是半角又是全角的情况 for i:=0 to list.Count-1 do begin self.Memo1.Lines.Add(list.Strings); end;end;end.
 
dxiaoliang你说的方法我知道是我没说清楚那信息中有空格的所以截取出来的信息是不对
 
循环找两个逗号之间的字符串,不为空就加到一个TStringList中
 
wulingbo2005能写下吗
 
LZ:dxiaoliang 的方法稍微改一下就可以了(增加一些判断及字符串的处理),不要老是照搬别人的代码,没有自己的思考,永远都不会提高。
 
procedure TForm1.Button1Click(Sender: TObject);var S:string;begin s:='1 ,13569555855 ,1 ,山东省 青岛市 四方区,465445'; showmessage(StringReplace(S,',',#13#10,[rfReplaceAll]));end;
 
我这里有两个方法可以使用,希望能帮到你:1。把空格转换为非常用串,比如:“)(*&*%#@”,再用stringList分割,完成把“)(*&*%#@”替换为空格2。使用ExtractStrings函数,用法如下:在Classes单元中, ExtractStrings()是这样声明的: --------------------------------------------------------------------------- function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings): Integer; --------------------------------------------------------------------------- Separators 参数指定一组分割符,所有的子串都是用它们分割的。但是成对的引号内的分割符会被忽略(参看下面的例子)。WhiteSpace 参数指定每个子串开头被忽略的字符s。Content 参数就是被分割的“源”串了。Strings 参数用于接收分割后的各个子串。它的原有内容不会被清空。别忘了Create哦。另外,EctractStrings不会把(忽略WhiteSpaces后的)空串加入到Strings中。写个例子吧:比如ABC|... DEF|#### GHI|"不会被分开|# www.wesoho.com"要得到 ABCDEFGHI不会被分开|# www.wesoho.com四个子串可以用下面的代码:uses Classes;var ASource: PChar; AStr: String; ACount: Integer; AStrings: TStringList;begin ASource := 'ABC|... DEF|#### GHI|"不会被分开|# www.wesoho.com"'; AStrings := TStringList.Create; try ACount := ExtractStrings(['|'], [' ', '#', '.'], ASource, AStrings); {do any further processing} /for AStr in AStrings do // Writeln(AStr); finally AStrings.Free; end; Readln;end. ============================
 
用空格替换成,然后存放到stringlist中,再读出来!就可以了!
 
procedure SplitStr(Result : TStrings; Raw_Str : string);var FirstCommaPos : Integer; //第一个逗号位置 SecondCommaPos : Integer; //第二个逗号位置 StrBetweenComma : string; //逗号间的字符串begin FirstCommaPos := 0; SecondCommaPos := Pos(',', Raw_Str); //如果第二个逗号的位置不超过字符串的长度 while (SecondCommaPos<Length(Raw_Str)) and (SecondCommaPos>0) do begin StrBetweenComma := Copy(Raw_Str , FirstCommaPos + 1, SecondCommaPos - FirstCommaPos -1); //不为空才加到TStringList中 if Trim(StrBetweenComma)<>'' then begin Result.Add(StrBetweenComma); end; FirstCommaPos := SecondCommaPos; SecondCommaPos := PosEx(',' , Raw_Str , SecondCommaPos + 1); if SecondCommaPos<=0 then begin StrBetweenComma := Copy(Raw_Str , FirstCommaPos + 1, length(StrBetweenComma)); if Trim(StrBetweenComma)<>'' then begin Result.Add(StrBetweenComma); end; Exit; end; end;end;
 
目前只能支持半角的逗号
 
也可以用pos函数找到‘,’的索引值!在存入到stringlist中!
 
接受答案了.
 
后退
顶部