String 在Delphi中使用Pos()查找换行符
我通常使用C++Builder,刚刚开始在Delphi中进行测试。我找不到Delphi(XE5)String 在Delphi中使用Pos()查找换行符,string,delphi,line-breaks,String,Delphi,Line Breaks,我通常使用C++Builder,刚刚开始在Delphi中进行测试。我找不到Delphi(XE5)Pos()函数的换行符,它的语法很奇怪。我错了什么?使用其他函数,如StringReplace(),它可以正常工作。下面是一个示例代码: sl := TStringList.Create; sl.Add('Hello'); sl.Add('world'); sl.Add('!'); if (Pos(sl.Text, #13#10) > 0) then ShowMessage('1')
Pos()
函数的换行符,它的语法很奇怪。我错了什么?使用其他函数,如StringReplace()
,它可以正常工作。下面是一个示例代码:
sl := TStringList.Create;
sl.Add('Hello');
sl.Add('world');
sl.Add('!');
if (Pos(sl.Text, #13#10) > 0) then
ShowMessage('1')
else if (Pos(sl.Text, #13) > 0) then
ShowMessage('2')
else if (Pos(sl.Text, #10) > 0) then
ShowMessage('3')
else
ShowMessage('4'); // Comes always here...
这就是我在C++Builder中一直使用的方法,从来没有遇到过问题。如果您以错误的顺序传递函数的参数,首先必须传递要搜索的子字符串,然后传递缓冲区字符串
function Pos(const SubStr, Str: _ShortStr; Offset: Integer): Integer;
function Pos(const SubStr, Str: UnicodeString; Offset: Integer): Integer; overload;
function Pos(const SubStr, Str: _WideStr; Offset: Integer): Integer; overload;
function Pos(const SubStr, Str: _RawByteStr; Offset: Integer): Integer;
试试这个
if Pos(#13#10, sl.Text) > 0 then
或
哦,老兄。。。非常感谢你。我只是觉得自己很愚蠢。在C++Builder中,Pos()函数是字符串的一种方法,我总是对独立函数感到困惑。@jmiller:在XE5中,您现在可以对基本数据类型调用方法,包括字符串(通过
SysUtils.TStringHelper
类),例如:使用SysUtils;如果sl.Text.IndexOf(#13#10)>-1,则…
。请注意,这样的代码是基于0的,而不是基于1的。即使您确实以正确的顺序传递了Pos的参数,这也是一个特殊的示例,因为sl.Text
将从字符串的内部数组生成结果字符串,使用固定的EOL定界符。在<>代码> POS < /Co>字符串方法中,这样的错误在if Pos(sLineBreak, sl.Text) > 0 then