如何删除 Delphi 个字母组成的字符串中的数字
How to delete numbers in the string of Delphi letters
我有一个字符串,我设置了选择字母的坐标,但有时它们会混淆,我问的是坐标和数字,如果 '105DYUDXB28DYU13'
已经完成了,我该怎么做'DYUDXBDYU'
tmpT.Put:=Trim(MidStr(S,8,6))+Trim(MidStr(S,37,3));
性能较好的方案如下(uses Character
):
function RemoveNumbers(const AString: string): string;
var
i, j: integer;
begin
SetLength(result, AString.Length);
j := 0;
for i := 1 to AString.Length do
if not AString[i].IsDigit then
begin
inc(j);
result[j] := AString[i];
end;
SetLength(result, j);
end;
这个函数使用了Delphi7之后引入的一些语言和库特性,为了让这个在Delphi7中工作,你需要稍微重写一下:
function RemoveNumbers(const AString: string): string;
var
i, j: integer;
begin
SetLength(result, Length(AString));
j := 0;
for i := 1 to Length(AString) do
if not (AString[i] in ['0'..'9']) then
begin
inc(j);
result[j] := AString[i];
end;
SetLength(result, j);
end;
细则: TCharHelper.IsDigit
可识别 Unicode,因此它将 return true
用于所有 Unicode 数字。例如,它将 return true
for
- ٣ (U+0663: 阿拉伯-印度数字三),
- ੪ (U+0A6A: GURMUKHI 数字四),
- ௫(U+0BEB:泰米尔数字五),
- ៥(U+17E5:高棉数字五),以及
- ᠗ (U+1817: 蒙古文数字七).
如果您只想将字符 '0'..'9'
视为数字,您可以使用现代版本的 Delphi 7 测试:
if not CharInSet(AString[i], ['0'..'9']) then
还使用过程和 var 参数编写代码:
procedure RemoveNumbers(var Text: String);
var
Index: Integer;
begin
for Index := Length(Text) downto 1 do
if Text[Index] in ['0'..'9']
then Text := Copy(Text, 1, Index - 1) + Copy(Text, Index + 1, Length(Text) - Index);
end;
var
Text: String;
begin
Text := '105DYUDXB28DYU13';
RemoveNumbers(Text);
WriteLn(Text);
end.
我有一个字符串,我设置了选择字母的坐标,但有时它们会混淆,我问的是坐标和数字,如果 '105DYUDXB28DYU13'
已经完成了,我该怎么做'DYUDXBDYU'
tmpT.Put:=Trim(MidStr(S,8,6))+Trim(MidStr(S,37,3));
性能较好的方案如下(uses Character
):
function RemoveNumbers(const AString: string): string;
var
i, j: integer;
begin
SetLength(result, AString.Length);
j := 0;
for i := 1 to AString.Length do
if not AString[i].IsDigit then
begin
inc(j);
result[j] := AString[i];
end;
SetLength(result, j);
end;
这个函数使用了Delphi7之后引入的一些语言和库特性,为了让这个在Delphi7中工作,你需要稍微重写一下:
function RemoveNumbers(const AString: string): string;
var
i, j: integer;
begin
SetLength(result, Length(AString));
j := 0;
for i := 1 to Length(AString) do
if not (AString[i] in ['0'..'9']) then
begin
inc(j);
result[j] := AString[i];
end;
SetLength(result, j);
end;
细则: TCharHelper.IsDigit
可识别 Unicode,因此它将 return true
用于所有 Unicode 数字。例如,它将 return true
for
- ٣ (U+0663: 阿拉伯-印度数字三),
- ੪ (U+0A6A: GURMUKHI 数字四),
- ௫(U+0BEB:泰米尔数字五),
- ៥(U+17E5:高棉数字五),以及
- ᠗ (U+1817: 蒙古文数字七).
如果您只想将字符 '0'..'9'
视为数字,您可以使用现代版本的 Delphi 7 测试:
if not CharInSet(AString[i], ['0'..'9']) then
还使用过程和 var 参数编写代码:
procedure RemoveNumbers(var Text: String);
var
Index: Integer;
begin
for Index := Length(Text) downto 1 do
if Text[Index] in ['0'..'9']
then Text := Copy(Text, 1, Index - 1) + Copy(Text, Index + 1, Length(Text) - Index);
end;
var
Text: String;
begin
Text := '105DYUDXB28DYU13';
RemoveNumbers(Text);
WriteLn(Text);
end.