我有元素存储在数组中,格式为name#email
,我想按名称搜索数组,然后只输出电子邮件,即#.
之后的内容,例如,如果我按名称Donald搜索时元素是donald#[email protected]
,输出应该是[email protected]
。
我的想法是从长度(名称)中减去长度(字符串)。我怎么只计算#?
要在字符串中搜索pascal中子字符串的位置,请使用Pos()函数。
在您的情况下,子字符串将由名称加上#
字符组成。
提取名称后加上#
的简单函数如下所示:
function ExtractInfo( const searchName,data : String) : String;
var
p : Integer;
begin
p := Pos(searchName+'#',data); // Find position of name + '#' in data
if (p > 0) then
Result := Copy(data,p+Length(searchName)+1) // Copy after name and `#`
else
Result := '';
// Note 1, if Result is not a valid way to assign the function result,
// use ExtractInfo instead.
// Note 2, if only two parameters are not allowed in your pascal Copy function,
// add Length(data) as the third parameter.
end;
要测试功能:
WriteLn(ExtractInfo('donald','donald#[email protected]'));