冥界3大法王 发表于 2024-9-28 10:23

比如,我要Delphi取到此处的字符名称,有啥直接的方法或函数?


X:\Tools\1.大白补丁\Baymax Patch Tools v2.9.7.5\Baymax.exe
似乎利用这些都得经过 替换 或 删减,并不直接。


正则表达式分组匹配倒数的 那个 我还不会用{:301_974:}

sail2000 发表于 2024-9-28 10:40

var s: TArray<string> := string('X:\Tools\1.大白补丁\Baymax Patch Tools v2.9.7.5\Baymax.exe').Split(['\']);
ShowMessage(s);

苏紫方璇 发表于 2024-9-28 10:45

我一般是倒查两个\,然后取到开头和长度,截取一下

冥界3大法王 发表于 2024-9-28 11:11

本帖最后由 冥界3大法王 于 2024-9-28 11:12 编辑

sail2000 发表于 2024-9-28 10:40
var s: TArray := string('X:\Tools\1.大白补丁\Baymax Patch Tools v2.9.7.5\Baymax.exe').Split(['\']) ...是不是这么解释:
定义一个叫S的数组字符串
用'\'来分割

后面(s从哪到哪解释不好。

但我测试
ShowMessage(s);
ShowMessage(s);
ShowMessage(s);
ShowMessage(s);
就分别取到了不同\之间的地方

lies2014 发表于 2024-9-28 13:12

本帖最后由 lies2014 于 2024-9-28 13:14 编辑

复杂点的:
s := 'X:\Tools\1.大白补丁\Baymax Patch Tools v2.9.7.5\Baymax.exe';
t := copy(s, copy(s, 0, s.LastIndexOf('\')).LastIndexOf('\')+2, s.LastIndexOf('\')-copy(s, 0, s.LastIndexOf('\')).LastIndexOf('\')-1);

蒋德盼 发表于 2024-9-28 16:53

ExtractFileName('X:\Tools\1.大白补丁\Baymax Patch Tools v2.9.7.5\Baymax.exe')

canyonlwt 发表于 2024-9-28 17:20

一般都是取得整串的长度,轮询查找/,找到最后两个的长度,做差截取

lies2014 发表于 2024-9-29 10:40

蒋德盼 发表于 2024-9-28 16:53
ExtractFileName('X:\Tools\1.大白补丁\Baymax Patch Tools v2.9.7.5\Baymax.exe')

这倒提醒我了,最简单的办法:
s := 'X:\Tools\1.大白补丁\Baymax Patch Tools v2.9.7.5\Baymax.exe';
t := ExtractFileName(ExtractFileDir(s));
页: [1]
查看完整版本: 比如,我要Delphi取到此处的字符名称,有啥直接的方法或函数?