pos函数是从左到右查找字符串,有没有从右到左查找的函数?

mathsfan 2009-05-05 03:39:11
虽然该问题可以变相解决,不过我觉得如果有这种函数的话平时也蛮有用的哈...
...全文
752 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mathsfan 2009-05-05
  • 打赏
  • 举报
回复
看到了,好象只支持单字符...
没有匹配到时返回0,看来仅仅用在一些特殊的时候,对于大部分的匹配字符串的时候还是得自己去写哈!!!
bdmh 2009-05-05
  • 打赏
  • 举报
回复
你把分隔符设为'.d',他认的还是'.',所以你返回的还是'c'
delphi help
When working with multi-byte character sets (MBCS), S may contain double byte characters, but the delimiters listed in the Delimiters parameter must all be single byte non-null characters.
JPEXE 2009-05-05
  • 打赏
  • 举报
回复
如果只是查找一个单字符(Char)的话,还可以用StrRScan.
function StrRScan(const Str: PAnsiChar; Chr: AnsiChar): PAnsiChar;
function StrRScan(const Str: PWideChar; Chr: WideChar): PWideChar;

当然要注意它返回的不是位置,而是指针,就看合不合你的使用了.
相反从左查找用StrScan.
mathsfan 2009-05-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
如果只是考虑第一次出现的情况,LastDelimiter,反向第一次出现的位置
[/Quote]
bdmh果然博学多才啊...
不过有一个问题:
如果
s:='a.b.c';
i:=LastDelimiter('.',s)+1;
ShowMessage(Copy(s,i,MaxInt));
则正确返回:c
而如果
s:='a.b.c';
i:=LastDelimiter('.d',s)+1;
ShowMessage(Copy(s,i,MaxInt));
按理我需要的是:空
现在返回:c
即,如果肯定能pos到时正确,没pos到时结果是不正确的...
僵哥 2009-05-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mathsfan 的回复:]
引用 1 楼 hongqi162 的回复:
uses
strutils;


使用ReverseString将字符串翻转一下

这个方法我知道哈...
不过这是我所知道的最简单的方法。
[/Quote]
最简单的就是自己写。
mathsfan 2009-05-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hongqi162 的回复:]
uses
strutils;


使用ReverseString将字符串翻转一下
[/Quote]
这个方法我知道哈...
不过这是我所知道的最简单的方法。
bdmh 2009-05-05
  • 打赏
  • 举报
回复
如果只是考虑第一次出现的情况,LastDelimiter,反向第一次出现的位置
hongqi162 2009-05-05
  • 打赏
  • 举报
回复
uses
strutils;




使用ReverseString将字符串翻转一下

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧