我有一个字符串,我设置了选择字母的坐标,但有时它们会混淆,我询问坐标与数字,例如 '105DYUDXB28DYU13'
完成了吗'DYUDXBDYU'
tmpT.Put:=Trim(MidStr(S,8,6))+Trim(MidStr(S,37,3));
最佳答案
性能良好的解决方案如下(使用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;
该函数使用了 Delphi 7 之后引入的一些语言和库功能。要使其在 Delphi 7 中工作,您需要稍微重写它:
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 感知的,因此它将针对所有 Unicode 数字返回 true
。例如,它将返回 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
关于string - 如何删除Delphi字母串中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50168002/