【问题标题】:Parsing strings containing variable names in Delphi在 Delphi 中解析包含变量名的字符串
【发布时间】:2011-12-07 16:14:58
【问题描述】:

我目前正在编写一个应用程序,其中有如下功能:

var a,b,c, algorithm: string
begin

a := some-operations-with-regular-expressions;
b := some-other-operation-with-regular-expressions;
c := just-similar-to-b-but-different;

algorithm := IniFile.ReadString('XML Info','AlgorithmExpression', ''); 
//algorithm is fetched like 'http://wwww.urlhere' + a + '/' + b + '/' + c
DoDownload (algorithm, true);
end;

现在我期望 a、b 和 c 自动替换为具有相同名称的变量的值,但看来我错了。有什么办法可以得到''和变量值之间的字符串组成的算法变量的结果?

任何建议(即使它要求进行重大重新设计)都将不胜感激。

谢谢, 斯芬克斯

【问题讨论】:

  • 这不是 Delphi(或 any 编程语言)的工作方式...algorithm 是一个包含字符的字符串。就是这样。期间。
  • 这个问题不清楚...被关闭的危险。
  • @Chris:我认为 OP 有一个类似 'Hello ' + name + '!' 的字符串(字面意思),并希望 name 在运行时自动替换为字符串变量 name 的内容。 .
  • 您希望 Delphi 自动解析字符串表达并用不会发生的值替换适当的变量。你必须自己做。我建议您更改存储在 INI 文件中的算法表达式以包含“占位符”,以便您可以轻松地将它们替换为实际值。例如,在您的情况下,将 'http://wwww.urlhere' + a + '/' + b + '/' + c 替换为 http://wwww.urlhere%param1%/%param2%/%param3%。然后在 algorithm 变量上执行 StringReplace ,以便将 %param#% 替换为实际变量值。
  • @sphynx:我给你一个 +1 只是因为我认为 -1 是不公平的。 (并且一个问题不应该仅仅因为从程序员的角度来看它非常简单。)

标签: string delphi variables casting


【解决方案1】:

我不明白你要做什么,但这里试一试。

IniFile 应该包含如下内容:

[XML Info]
AlgorithmExpression=http://wwww.urlhere[<a>]/[<b>]/[<c>]

你可以这样做:

algorithm := IniFile.ReadString('XML Info','AlgorithmExpression', ''); 
algorithm := StringReplace(algorithm,'[<a>]',a,[]); 
algorithm := StringReplace(algorithm,'[<b>]',b,[]); 
algorithm := StringReplace(algorithm,'[<c>]',c,[]); 
DoDownload (algorithm, true);

【讨论】:

  • 谢谢你,克里斯蒂安,这就是我一直在寻找的。我不是专业人士,这就是为什么我有时会遇到这种问题。感谢您为我指明正确的方向,它现在就像一个魅力:)
【解决方案2】:

如果这是关于格式化,Delphi 也有 C 风格的格式化命令:

var
  output: String;
begin
  output := Format('http://%s/%s/%s', ['this', 'that', 'otherthing']);
  ShowMessage(output);
end;

显示消息:

http://this/that/otherthing

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多