从Delphi字符串中删除“#$A”

15

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

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

然后我已经放置了

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

如何删除'#$A'。但是这样并不能将其删除。

是否有其他方法可以实现这个目标。

谢谢


8
你可能想要考虑在此期间也删除 #$D - David Heffernan
2个回答

44

移除 #$A 周围的引号:

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

#告诉Delphi你正在指定一个字符的数字代码。 $表示您正在使用十六进制。 A是该值。

使用引号搜索字符串中#$A字符的存在,但未找到,因此未替换任何内容。


2
非常感谢...我明天会标记为正确,因为现在得离开了。 - JCTLK
2
@Andreas,我完全同意这是一个非常好的答案,绝对值得采纳。但是,一般来说,等待一段时间看看是否会发布更简单、更完整、更好解释的答案也是一个好主意和非常好的实践。 - PA.
2
是的..我赶着离开,所以没有5分钟来标记这个。所以我今天做了..非常感谢。@Andreas:我想这回答了你的问题。 :) - JCTLK

6

本文翻译自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),它将返回位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接