如何屏蔽字符串的中间部分?

时间:2015-10-02 11:36:17

标签: delphi formatting

我有一个包含19个字符的字符串,如果我的字符串是:

  

123456789012345789

我想这样显示:

  

123456 ********* 7890

第7个字符或第15个字符的含义我想用*掩盖字符。我可以用什么方法来实现这个目标?

1 个答案:

答案 0 :(得分:4)

FUNCTION ReplaceInString(CONST Source : STRING ; StartPos,Length : Cardinal ; NewChar : CHAR): STRING;
  VAR
    P : INTEGER;

  BEGIN
    Result:=Source;
    FOR P:=StartPos TO PRED(StartPos+Length) DO
      IF (P>=LOW(STRING)) AND (P<=LENGTH(Result)-(1-LOW(STRING))) THEN
        Result[P]:=NewChar
  END;

如果您不关心支持基于0的字符串(对于移动编译器),那么您可以使用它:

FUNCTION ReplaceInString(CONST Source : STRING ; StartPos,Length : Cardinal ; NewChar : CHAR): STRING;
  VAR
    P : Cardinal;

  BEGIN
    Result:=Source;
    FOR P:=StartPos TO PRED(StartPos+Length) DO
      IF (P>=1) AND (P<=LENGTH(Result)) THEN
        Result[P]:=NewChar
  END;

将其用作:

WRITELN(ReplaceInString('123456789012345789',7,9,'*'))