如何读取字符串,然后从文件中获取String作为值。然后我需要将值/字符串显示到TextEdit组件中。
例:
BHG | 22 | CLASS | 12345 ^ JOHN CARTER || 200 |好| 155 ^ 200 |
BHG | 333 | CLASS | 23231 ^ AMIRA || 100 | BAD | 100 ^ 150 |
我需要在TextEdit1中根据'22'值获取字符串“200”,然后根据'333'值在TextEdit2中获取字符串“100”。
您可以使用Delimiter
的DelimitedText
和TStringList
在几行代码中执行此操作 - 请参阅下文。
简而言之,TStringList就像一个可以通过索引引用的字符串数组。您可以通过设置分隔符的值来将输入字符串解析为数组,在您的情况下为“|”然后将输入字符串分配给其DelimitedText属性。
procedure TForm1.Button1Click(Sender: TObject);
var
StringList : TStringList;
begin
StringList := TStringList.Create;
try
StringList.Delimiter := '|';
StringList.DelimitedText := 'BHG|22|CLASS|12345^JOHN CARTER||200|Good|155^200|';
Edit1.Text := StringList[6]; // Fills Edit1.Text with 200
finally
StringList.Free;
end;
end;
虽然MartynA的回答使用TStringList
将一个字符串分成单独的单词(很好的技巧,我应该注意到),我实现了另一种方法来执行相同的任务。请参阅下面的代码。
procedure TForm1.Button1Click(Sender: TObject);
var
S, D, Res: String;
Arr: Array of String;
i: integer;
begin
S := 'BHG|22|CLASS|12345^JOHN CARTER||200|Good|155^200|';
D := '|';
Res := '';
for i:=Low(S) to High(S) do
begin
if S[i] <> D then
Res := Res + S[i]
else
begin
SetLength(Arr, Length(Arr) + 1);
Arr[Length(Arr) - 1] := Res;
Res := '';
end;
end;
// Display each word to us
for i:=Low(Arr) to High(Arr) do
ShowMessage(Arr[i]);
end;
好吧,现在你所要做的就是通过迭代每个条目并将返回值与所需条件进行比较来构建条件以从数组中获取适当的值。