从Delphi字符串中删除'#$ A'

JCT*_*TLK 12 delphi string replace escaping

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

newStr := 'Projector Ex320u-st Short Throw '#$A'1024 X 768 2700lm'
Run Code Online (Sandbox Code Playgroud)

然后我就放了

newStr := StringReplace(newStr,'#$A','',[rfReplaceAll]);
Run Code Online (Sandbox Code Playgroud)

删除'#$ A'的东西.但这并没有消除它.

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

谢谢

Mar*_*ema 40

删除#$ A周围的引号:

newStr := StringReplace(newStr,#$A,'',[rfReplaceAll]);
Run Code Online (Sandbox Code Playgroud)

#告诉delphi你用数字代码指定一个字符.$表示你用十六进制指定.A是价值.

使用引号,您正在搜索字符串中#$ A字符的存在,这些字符未找到,因此不会替换任何内容.

  • 非常感谢...明天我会标记这个正确的.现在必须离开. (2认同)
  • @Andreas,我完全同意这是一个非常好的答案绝对值得被接受.但是,总的来说这是一个好主意,它也是一个很好的做法,只需等待一段时间,看看是否发布了更简单,更完整,更好解释的答案. (2认同)
  • 是的..我急于离开.因此没有5分钟来纪念这一点.所以我今天做了..非常感谢.@Andreas:我想这会回答你的问题.:) (2认同)

jcf*_*ria 5

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

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

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

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

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

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

因此,如果您想添加“确定”和另一行:

Memo.Lines.Add('Ok' + #13#10)
Run Code Online (Sandbox Code Playgroud)

或者

Memo.Lines.Add('Ok' + #$D#$A)
Run Code Online (Sandbox Code Playgroud)

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

MyString := Trim(MyString)
Run Code Online (Sandbox Code Playgroud)

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

这就是 Delphi 向您显示控制字符的方式,如果您要这样做,Pos(#13, MyString)否则Pos(#10, MyString)它将返回位置。