字符串分离问题,可以看一下这么解决?(50分)

  • 主题发起人 主题发起人 wv990
  • 开始时间 开始时间
W

wv990

Unregistered / Unconfirmed
GUEST, unregistred user!
字符串:ZXFR|SDF4445645|DSGTY676|大富翁
如何将上面的字符串单独分离出来?
结果是str1=ZXFR,str2=SDF4445645,str3=DSGTY676,str3=大富翁
说明一下,其中|后面的字符长度不是固定的。
 
用pos函数判断 | 的位置,然后使用copy获取数据str*,
然后用户copy获取剩余数据,
以上操作循环直到剩余数据为0
 
用StringList就可以,详情请看帮助
 
这个方法我也想到了,比较繁琐,有没有更简单的方法?
 
给你一个我用过的函数吧
function ExtractWords(const s: string; const aList: TStrings;
const Delims: char='|'): TStrings;
var
i: Integer;
j: Integer;
SLen: Integer;
begin
if aList = nil then
Result := TStringList.Create
else
Result := aList;

SLen := Length(s);
i := 1;
j := i;
for i := 1 to slen do
begin
if s = delims then
begin
Result.Add(copy(s, j, i - j));
j := i + 1;
end;
end;
Result.Add(copy(s, j, i - j));
end;
 
这个函数调用的结果是TStrings,我如何得到想要的字符呢?
 
procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
list: TStringList;
i: Integer;
begin
str := 'ZXFR|SDF4445645|DSGTY676|大富翁;';
list := TStringList.Create;
try
list.Delimiter := '|';
list.DelimitedText := str;
for i := list.Count - 1 downto 0 do
ShowMessage(list);//可以查看每一个字符串
finally
list.Free;
end;
end;
 
感谢帮助我的朋友们。
 
“杯中水”的方法非常好,佩服!
 
杯中水 的顺序倒一下就OK
 
同意杯中水的做法
 
一沟样姐 !!
 
static String[] getString(String s) {
String s1 = "";
int i = 0,//while循环变量
k = 0,//数组大小
m = 0;//数组元素变量
//第一个循环取得字符串数组的大小
while (i < s.length()) {
char c = s.charAt(i);
if (c == '|') {
k++;
}
i++;
}
//建立一个字符串数组变量
String[] s_array = new String[k + 1];
//给字符串数组的每个元素赋值
i = 0;//while循环变量
while (i < s.length()) {
char c = s.charAt(i);
if (c == '|') {
s_array[m] = s1;
m++;
s1 = "";
} else {
s1 += c;
}
i++;
}
s_array[m] = s1;
//检验一下
for (int j = 0; j < s_array.length; j++) {
System.out.println(s_array[j]);
}
return s_array;
}
 
多人接受答案了。
 
后退
顶部