【问题标题】:Unescape a string with escaped sequences in Delphi在 Delphi 中使用转义序列对字符串进行转义
【发布时间】:2014-09-06 12:03:01
【问题描述】:

我使用 Delphi 5 并从 http 连接中获得这样的字符串:

str :='content=bell=7'#$8'size=20'#$8'other1'#$D#$A#$8'other2'

这个字符串包含一些带有转义字符的序列,我想取消转义这些字符。如果我使用修剪功能,转义序列仍在里面。也许这是因为“#$8”不是可见的标志?

如何单独替换“#&8”。例如用'&',这样我就得到了字符串:

str1 :='content=bell=7&size=20&other1'#$D#$A'&other2'

在此之后,我可以使用 trim 取消转义其他序列。

str2 :='content=bell=7&size=20&other1#13#10&other2'

【问题讨论】:

  • 如果 D5 有 StringReplace:str1 := StringReplace(str, ''#$8'', '&', [rfReplaceAll]);
  • 第二个参数不需要引号:str1 := StringReplace(str, #$8, '&', [rfReplaceAll]);

标签: string delphi escaping delphi-5


【解决方案1】:

那些是 Delphi 字符序列。 编译器 在处理您的源文件时解释它们。它将#$8 转换为字符串中的退格字符。如果你想用别的东西替换那个字符,你可以打电话给StringReplace。 (如果那是您的真实代码,那么您可以跳过额外的函数调用,直接在代码中使用字符串文字中所需的字符。)

str2 := StringReplace(str1, #8, '&', [rfReplaceAll]);

Trim 从字符串的开头和结尾删除空格,但您的字符不在任一结尾。

【讨论】:

  • 谢谢,这有帮助。 :) 我认为,我对 Delphi 中的字符转义有一些理解问题。
猜你喜欢
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 2011-05-09
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多