【问题标题】:Removing '#$A' from Delphi string从 Delphi 字符串中删除 '#$A'
【发布时间】:2011-09-19 10:50:09
【问题描述】:

我正在修改一个 delphi 应用程序。在其中我从组合框中获取文本。问题是当我将文本保存在表格中时,它包含一个回车符。在调试模式下它显示如下。

newStr := 'Projector Ex320u-st Short Throw '#$A'1024 X 768 2700lm'

那我放了

newStr := StringReplace(newStr,'#$A','',[rfReplaceAll]);

删除“#$A”的东西。但这不会删除它。

有没有其他方法可以做到这一点..

谢谢

【问题讨论】:

  • 您也可以考虑删除#$D。

标签: delphi string replace escaping


【解决方案1】:

删除#$A: 周围的引号

newStr := StringReplace(newStr,#$A,'',[rfReplaceAll]);

# 告诉 delphi 您正在通过数字代码指定一个字符。 $ 表示您以十六进制指定。 A 是值。

您正在使用引号搜索字符串中是否存在 #$A 字符,但未找到,因此没有任何内容被替换。

【讨论】:

  • 非常感谢...明天我会标记这个正确的。因为现在要离开了。
  • @Andreas,我完全同意这是一个非常好的答案,绝对值得接受。但是,总的来说,这是一个好主意,也是一个很好的做法,请稍等片刻,看看是否发布了一个更简单、更完整、解释更好的答案。
  • 是的..我急于离开。因此没有 5 分钟来标记这一点。所以我今天做了..非常感谢。 @Andreas:我想这回答了你的问题。 :)
【解决方案2】:

改编自http://www.delphipages.com/forum/showthread.php?t=195756

“#”表示一个 ASCII 字符,后跟一个字节值 (0..255)。

$A 是十六进制,等于 10,$D 是十六进制,等于 13。

#$A 和 #$D(或 #10 和 #13)分别是 ASCII 换行符和回车符。

换行 = ASCII 字符 $A(十六进制)或 10(十进制):#$A 或 #10

回车 = ASCII 字符 $D(十六进制)或 13(十进制):#$D 或 #13

所以如果你想添加 'Ok' 和另一行:

Memo.Lines.Add('Ok' + #13#10)

或

Memo.Lines.Add('Ok' + #$D#$A)

从开头删除控制字符(和空格) 和字符串的结尾:

MyString := Trim(MyString)

为什么 Pos() 找不到它们?

这就是Delphi显示控制字符的方式 对你来说,如果你要做Pos(#13, MyString) 或Pos(#10, MyString) 那么它 将返回位置。

【讨论】:

    猜你喜欢
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 2016-07-21
    • 2015-11-24
    相关资源
    最近更新 更多