Delphi中的字符串问题

时间:2011-11-16 18:03:04

标签: string delphi delphi-7

我有一串随机数字 (数字只能使用一次,只能使用1-9,几乎任何长度(最小1,最大9)):

var
Input: String;
begin
Input := '431829576'; //User inputs random numbers

现在我需要获得指定的号码5

怎么样?
var
Number: Integer;
begin
Number := 5;

并且函数以结果543182976执行。

我对如何制作这样的功能没有任何想法,谢谢。

3 个答案:

答案 0 :(得分:9)

你的意思是这样吗?

function ForceDigitInFront(const S: string; const Digit: Char): string;
begin
  result := Digit + StringReplace(S, Digit, '', []);
end;

更轻量级的解决方案

function ForceDigitInFront(const S: string; const Digit: Char): string;
var
  i: Integer;
begin
  result := S;
  for i := 1 to Length(S) do
    if result[i] = Digit then
    begin
      Delete(result, i, 1);
      break;
    end;
  result := Digit + result;
end;

答案 1 :(得分:4)

你可以这样做:

function ForceDigitInFront(const S: string; const Digit: Char): string;
var
  dPos : Integer;
begin
  Result := s;
  dPos := Pos( Digit,S);
  if (dPos <> 0) then begin  // Only apply Digit in front if Digit exists !?
    Delete( Result,dPos,1);
    Result := Digit + Result;
  end;
end;

如果Digit不在输入字符串中,则此处不会添加数字,但如果它不适合您的实现,请更改此数字。

答案 2 :(得分:2)

这是一个减少所需字符串分配数量的解决方案,并检查数字是否已经在前面:

function ForceDigitInFront(const S: string; const Digit: Char): string; 
var 
  dPos : Integer; 
begin 
  Result := s; 
  for dPos := 1 to Length(Result) do
  begin
    if Result[dPos] = Digit then
    begin
      if dPos > 1 then
      begin
        UniqueString(Result);
        Move(Result[1], Result[2], (dPos-1) * SizeOf(Char));
        Result[1] := Digit;
      end;
      Exit;
    end;
  end;
end;