Как подсчитать часть строки до определенного символа? - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть элементы, хранящиеся в массиве, в формате name#email, я хочу найти массив по имени, а затем вывести только электронное письмо, т.е. то, что следует после #., например, если элемент donald#donald@hotmail.com когда я ищу по имени Дональд, вывод должен быть donald@hotmail.com.

Идея, которую я имею, состоит в том, чтобы вычесть длину (строку) из длины (имя).Как мне считать только до #?

1 Ответ

1 голос
/ 08 апреля 2019

Чтобы найти положение подстроки в паскале в строке, используйте функцию 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#donald@hotmail.com'));
...