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字符的存在,这些字符未找到,因此不会替换任何内容.
改编自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)它将返回位置。