找回密码  加入

AUTOIT CN

搜索
查看: 126|回复: 4

[网络通信] 字符串排序问题【已解决】

[复制链接]
发表于 6 天前 | 显示全部楼层 |阅读模式
本帖最后由 redapple2008 于 2022-6-22 19:24 编辑

复制代码
  1. ### 友情提示:本脚本由 Au3 正则测试工具 于 2022年06月22日17点18分51秒 自动生成,不保证其正确性,请自行修改测试 ###
  2. #include <Array.AU3>
  3. $string = _
  4. '{"menu_id":1,"menu_name":"流程管理","menu_has_one_flow_module_factory":null,"empower":"is_empower"},{"menu_id":6,"menu_name":"文档中心","menu_has_one_flow_module_factory":null,"empower":"is_empower"},{"menu_id":11,"menu_name":"内部邮件","menu_has_one_flow_module_factory":null,"empower":"is_empower"},{"menu_id":14,"menu_name":"外部邮件","menu_has_one_flow_module_factory":null,"empower":"is_empower"},{"menu_id":26,"menu_name":"日程计划","menu_has_one_flow_module_factory":null,"empower":"no_empower"},{"menu_id":32,"menu_name":"考勤管理","menu_has_one_flow_module_factory":null,"empower":"no_empower"},{"menu_id":434,"menu_name":"假期管理","menu_has_one_flow_module_factory":null,"empower":"no_empower"},{"menu_id":37,"menu_name":"费控管理","menu_has_one_flow_module_factory":null,"empower":"no_empower"},{"menu_id":43,"menu_name":"手机短信","menu_has_one_flow_module_factory":null,"empower":"no_empower"},{"menu_id":44,"menu_name":"客户管理","menu_has_one_flow_module_factory":null,"empower":"no_empower"}'
  5. Local $Array = StringRegExp($string, '(\d+).*?(?<="menu_name":")([^"]+)' ,3)
  6. If IsArray($Array) Then
  7.         For $i = 0 To UBound($Array) - 1  Step 2
  8.                  $zfc = "'" &$Array[$i]&"=>"&  $Array[$i+1]&"',"
  9.         ConsoleWrite($zfc)
  10.         Next
  11. EndIf
复制代码
最后的效果是下面的样子就行。
1=>"流程管理",6=>"文档中心",11=>"内部邮件",14=>"外部邮件",26=>"日程计划",32=>"考勤管理",37=>"费控管理",43=>"手机短信",44=>"客户管理",434=>"假期管理",
发表于 6 天前 | 显示全部楼层
  1. #include <Array.au3>

  2. Local $Array=['1=>"流程管理"','6=>"文档中心"','11=>"内部邮件"','14=>"外部邮件"','26=>"日程计划"','32=>"考勤管理"','434=>"假期管理"','37=>"费控管理"','43=>"手机短信"','44=>"客户管理"']

  3. _ArrayDisplay($Array,'$Array')

  4. For $n=0 To UBound($Array)-1
  5.         For $n1 = $n + 1 To  UBound($ARRAY)-1
  6.         If Number(StringRegExp($Array[$n], '\d+', 1)[0]) > Number(StringRegExp($Array[$n1], '\d+', 1)[0]) Then
  7.                 $temp = $Array[$n1]
  8.                 $Array[$n1] = $Array[$n]
  9.                 $Array[$n] = $temp
  10.         EndIf
  11. Next
  12. Next

  13. _ArrayDisplay($Array,'$Array')
复制代码


这样行不
 楼主| 发表于 6 天前 | 显示全部楼层

你的代码没问题,但我的问题好像是读数组有问题。谢谢热心回复。
发表于 6 天前 | 显示全部楼层
redapple2008 发表于 2022-6-22 17:22
你的代码没问题,但我的问题好像是读数组有问题。谢谢热心回复。
  1. ;~ ### 友情提示:本脚本由 Au3 正则测试工具 于 2022年06月22日17点18分51秒 自动生成,不保证其正确性,请自行修改测试 ###
  2. #include <Array.AU3>
  3. $zfc=''
  4. $string = _
  5. '{"menu_id":1,"menu_name":"流程管理","menu_has_one_flow_module_factory":null,"empower":"is_empower"},{"menu_id":6,"menu_name":"文档中心","menu_has_one_flow_module_factory":null,"empower":"is_empower"},{"menu_id":11,"menu_name":"内部邮件","menu_has_one_flow_module_factory":null,"empower":"is_empower"},{"menu_id":14,"menu_name":"外部邮件","menu_has_one_flow_module_factory":null,"empower":"is_empower"},{"menu_id":26,"menu_name":"日程计划","menu_has_one_flow_module_factory":null,"empower":"no_empower"},{"menu_id":32,"menu_name":"考勤管理","menu_has_one_flow_module_factory":null,"empower":"no_empower"},{"menu_id":434,"menu_name":"假期管理","menu_has_one_flow_module_factory":null,"empower":"no_empower"},{"menu_id":37,"menu_name":"费控管理","menu_has_one_flow_module_factory":null,"empower":"no_empower"},{"menu_id":43,"menu_name":"手机短信","menu_has_one_flow_module_factory":null,"empower":"no_empower"},{"menu_id":44,"menu_name":"客户管理","menu_has_one_flow_module_factory":null,"empower":"no_empower"}'
  6. Local $Array = StringRegExp($string, '(\d+).*?(?<="menu_name":")([^"]+)' ,3)
  7. If IsArray($Array) Then
  8.         For $i = 0 To UBound($Array) - 1  Step 2
  9.                  $zfc &= "'" &$Array[$i]&"=>"&  $Array[$i+1]&"',"
  10.         ConsoleWrite($zfc)
  11.         Next
  12. EndIf

  13. $Array=StringSplit($zfc,',')
  14. _ArrayDisplay($Array,'$zfc')

  15. For $n=1 To $Array[0]-1
  16.         For $n1 = $n + 1 To  $Array[0]-1
  17.         If Number(StringRegExp($Array[$n], '\d+', 1)[0]) > Number(StringRegExp($Array[$n1], '\d+', 1)[0]) Then
  18.                 $temp = $Array[$n1]
  19.                 $Array[$n1] = $Array[$n]
  20.                 $Array[$n] = $temp
  21.         EndIf
  22. Next
  23. Next

  24. _ArrayDisplay($Array,'$Array')
复制代码
 楼主| 发表于 5 天前 | 显示全部楼层

十分感谢,我的错误找到了,原来是变量没定义,所以一直没正确运行。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2022-6-28 16:23 , Processed in 0.171875 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表