有如下:按数字开头的字符串列表,按数字升序排序?
内容如下:1.大白补丁
10.沙盘
12.网络抓包
13.一机一码
15.易窗助手
16.注册表
17.查壳相关
18.TC9.5.1
19.FileLocatorPro_8.5.2951
2.API监控
20.快速搜索
21.列依赖相关
22.算钥查询
23.添加区段
24.资源修改
25.穷举破解
26.修复导入表
27.反调试
28.去数字签名
3.黑客进程
30.文本编辑
31.BeyondCompare
33.磁盘类
34.提权
4.16进制编辑
6.汇编比较
7.灰色按钮
8.火绒盾
9.进程监控
按数字升序排序?用Delphi实现。{:301_974:} program SortStrings;
{$APPTYPE CONSOLE}
uses
System.SysUtils,
System.Generics.Collections,
System.Generics.Defaults;
// 自定义比较器
function CompareStrings(const Left, Right: string): Integer;
var
LeftNum, RightNum: Integer;
begin
LeftNum := StrToInt(Left.Split(['.']));
RightNum := StrToInt(Right.Split(['.']));
Result := CompareValue(LeftNum, RightNum);
end;
var
StringList: TArray<string>;
SortedList: TArray<string>;
begin
// 初始化字符串数组
StringList := TArray<string>.Create(
'1.大白补丁', '10.沙盘', '12.网络抓包', '13.一机一码', '15.易窗助手',
'16.注册表', '17.查壳相关', '18.TC9.5.1', '19.FileLocatorPro_8.5.2951',
'2.API监控', '20.快速搜索', '21.列依赖相关', '22.算钥查询',
'23.添加区段', '24.资源修改', '25.穷举破解', '26.修复导入表',
'27.反调试', '28.去数字签名', '3.黑客进程', '30.文本编辑',
'31.BeyondCompare', '33.磁盘类', '34.提权', '4.16进制编辑',
'6.汇编比较', '7.灰色按钮', '8.火绒盾', '9.进程监控'
);
// 对数组进行排序
TArray.Sort<string>(StringList, TComparer<string>.Construct(CompareStrings));
// 输出排序后的数组
for var Item in StringList do
WriteLn(Item);
// 释放数组(实际上在这个例子中不需要,因为StringList是局部变量)
// StringList.Free; // 对于局部变量这是不必要的,且会导致编译错误
end.
不知道能运行不 hebeijianke 发表于 2024-9-22 23:27
program SortStrings;
{$APPTYPE CONSOLE}
一堆错,AI机器人太坑爹。 本帖最后由 塞北的雪 于 2024-9-23 09:56 编辑
<?php
$array = ['1.大白补丁', '10.沙盘', '12.网络抓包', '13.一机一码', '15.易窗助手',
'16.注册表', '17.查壳相关', '18.TC9.5.1', '19.FileLocatorPro_8.5.2951',
'2.API监控', '20.快速搜索', '21.列依赖相关', '22.算钥查询',
'23.添加区段', '24.资源修改', '25.穷举破解', '26.修复导入表',
'27.反调试', '28.去数字签名', '3.黑客进程', '30.文本编辑',
'31.BeyondCompare', '33.磁盘类', '34.提权', '4.16进制编辑',
'6.汇编比较', '7.灰色按钮', '8.火绒盾', '9.进程监控'];
natsort($array);
$array = array_values($array); // 重新索引数组
print_r($array);
?>
Array
(
=> 1.大白补丁
=> 2.API监控
=> 3.黑客进程
=> 4.16进制编辑
=> 6.汇编比较
=> 7.灰色按钮
=> 8.火绒盾
=> 9.进程监控
=> 10.沙盘
=> 12.网络抓包
=> 13.一机一码
=> 15.易窗助手
=> 16.注册表
=> 17.查壳相关
=> 18.TC9.5.1
=> 19.FileLocatorPro_8.5.2951
=> 20.快速搜索
=> 21.列依赖相关
=> 22.算钥查询
=> 23.添加区段
=> 24.资源修改
=> 25.穷举破解
=> 26.修复导入表
=> 27.反调试
=> 28.去数字签名
=> 30.文本编辑
=> 31.BeyondCompare
=> 33.磁盘类
=> 34.提权
)
PHP是最好的编程语言,没有之一 现在班主用哪个delphi版本呢呢,共享一下 搞不定,求大神用python来解答 神仙不在 发表于 2024-9-24 12:52
搞不定,求大神用python来解答
谁说的?
procedure TForm8.While_Do循环Click(Sender: TObject);
var
I: integer;
match: TMatch;
begin
Memo2.Clear;
I := 1;
while I < 200 do
begin
match := TRegEx.match(Memo1.Text, I.ToString + '\..*');
if match.Success then
begin
Memo2.Lines.Add(match.Value);
end;
Inc(I);
end;
end; 版本2:
procedure TForm8.升级版合体测试正则Click(Sender: TObject);
var
match: TMatch;
i: Integer;
begin
ShowMessage(Memo1.Lines.Count.ToString);
Memo2.Clear;
i := 1;
repeat
match := TRegEx.match(Memo1.Text, i.ToString + '\..*');
if match.Success then
begin
Memo2.Lines.Add(match.Value);
// ShowMessage(i.ToString);
end;
Inc(i);
until (i = 200);
end;
厉害了!{:1_893:} delphi接触的并不多 下面是当初脑残解决方案:(有bug)
procedure TForm1.用户指定文件夹下生成启动配置Click(Sender: TObject);
var
待生成工具集所在路径: string;
files: TStringDynArray;
配置文件中完整文件路径: string;
stringList: TStringList;
K, I: Integer;
变量1, 变量2: string;
match: TMatch;
begin
Memo1.Clear;
Memo2.Clear;
待生成工具集所在路径 := InputBox('请输入', '准备遍历的文件夹完整路径', 'X:\0.自创工具for delphi10.4.1\20.杂交外观浮动工具栏漂亮版x64dbg贴心助手\Tools');
files := TDirectory.GetFiles(待生成工具集所在路径, '*.exe', TSearchOption.soAllDirectories);
//for str in files do
// Memo2.Lines.Add(str);
stringList := TStringList.Create;
for 配置文件中完整文件路径 in files do
begin
// ShowMessage(str);
stringList.Sorted := True;
stringList.Duplicates := dupIgnore; //去重项
stringList.BeginUpdate; //必须加上这个!
变量1 := StringReplace(配置文件中完整文件路径, 待生成工具集所在路径 + '\', '', );
//ShowMessage(变量1);
match := TRegEx.match(变量1, '\\.*');
if match.Success then
begin
//ShowMessage(match.Value);
// Clipboard.AsText := match.Value;
变量2 := match.Value;
变量2 := StringReplace(变量1, 变量2, '', );
end;
stringList.EndUpdate; //似乎不加也行!
stringList.Add(变量2);
stringList.Sort;
end;
//放在这下面!
K := 1;
while K < 200 do //假设InputBox用户指定的目录下最多200个子工具文件夹!
begin
match := TRegEx.match(stringList.Text, K.ToString + '\..*');
if match.Success then
begin
Memo2.Lines.Add(match.Value);
// ShowMessage(match.Value);
//这后面加上按[小节找到]后的内容,依次写入.ini
end;
Inc(K);
end;
//Memo1.Lines.AddStrings(stringList);
end;
=============================
下面是AI回答,加我自己修改完善的,测试达标的代码:
procedure SortByNumericValue(const List: TStringList);
var
I, J: Integer;
Regex: TRegEx;
Match: TMatch;
IntValueI, IntValueJ: Integer;
begin
// 正则表达式,用于匹配字符串中的数字
Regex := TRegEx.Create('\d+');
// 使用冒泡排序算法根据数字对字符串列表进行排序
for I := 0 to List.Count - 2 do
for J := I + 1 to List.Count - 1 do
begin
// 尝试匹配数字
Match := Regex.Match(List);
if Match.Success then
IntValueI := StrToInt(Match.Value)
else
IntValueI := 0;
Match := Regex.Match(List);
if Match.Success then
IntValueJ := StrToInt(Match.Value)
else
IntValueJ := 0;
// 如果第二个数字大于第一个数字,则交换它们的位置
if IntValueJ < IntValueI then
begin
List.Exchange(I, J);
end;
end;
end;
procedure TForm1.重新最优化组合Click(Sender: TObject);
var
DirectoriesList: TStringDynArray;
I: Integer;
小节名列表: TStringList;
待生成工具集所在路径: string;
begin
小节名列表 := TStringList.Create;
待生成工具集所在路径 := InputBox('请输入', '准备遍历的文件夹完整路径', 'X:\0.自创工具for delphi10.4.1\20.杂交外观浮动工具栏漂亮版x64dbg贴心助手\Tools');
try
//获取当前目录及其所有子目录的名称列表
DirectoriesList := TDirectory.GetDirectories(待生成工具集所在路径);
//遍历并显示所有目录名称
for I := 0 to Length(DirectoriesList) - 1 do
begin
Memo1.Lines.Add(ExtractFileName(DirectoriesList));
小节名列表.Add(ExtractFileName(DirectoriesList));
end;
except
on E: Exception do
Writeln('发生异常: ' + E.Message);
end;
Memo1.Clear;
try
// 添加一些包含数字的字符串
// 小节名列表.Add('1.大白补丁');
// 排序
SortByNumericValue(小节名列表);
// 输出排序后的结果
for var Item in 小节名列表 do
Memo1.Lines.Add(Item);
finally
ShowMessage('小节名列表(StringList的内容)是:' + #13#10 + 小节名列表.Text);
小节名列表.Free;
end;
///// ↑↑↑↑↑↑以下内容完成遍历当前目录,得到小节名,排序备用 ↑↑↑↑↑↑ ///
end;
页:
[1]
2