找回密码
 加入
搜索
查看: 2816|回复: 5

[AU3基础] 【已解决】字符串前后对调问题请教,谢谢!

  [复制链接]
发表于 2017-6-4 15:11:47 | 显示全部楼层 |阅读模式
本帖最后由 pingfan5888 于 2017-6-4 20:02 编辑

一个文件都是这格式
例子:
上架感言(一些心里话)!!!</a></li>@@bookid/84698748">
封推感言!</a></li>@@bookid/88142003">
新书上传求收藏,求推荐啦!</a></li>@@bookid/345834257">
第1章 第一份工</a></li>@@bookid/83138239">
第2章 红色小马驹</a></li>@@bookid/83165990">
用如下:
$text = StringRegExpReplace($text, '(.*)@@(.*)', '\2\1')
替换后前后是对调了,可给换行了。
如何做到对调后不换行。

如果是单单一个字符串,
$text = '封推感言!</a></li><>id/88142003">'
$text = StringRegExpReplace($text, '(.*)<>(.*)', '\2\1')
msgbox(0,'',$text)
就没有问题。
发表于 2017-6-4 16:18:27 | 显示全部楼层
看一下是不是这样

### 友情提示:本脚本由 Au3 正则测试工具 于 2017年06月04日16点03分06秒 自动生成,不保证其正确性,请自行修改测试 ###
#include <Array.AU3>
$string = _
'上架感言(一些心里话)!!!</a></li>@@bookid/84698748">' & @CRLF & _
'封推感言!</a></li>@@bookid/88142003">' & @CRLF & _
'新书上传求收藏,求推荐啦!</a></li>@@bookid/345834257">' & @CRLF & _
'第1章 第一份工</a></li>@@bookid/83138239">' & @CRLF & _
'第2章 红色小马驹</a></li>@@bookid/83165990">'
Local $sSRERe = StringRegExpReplace($string,'(.*)@@(.*)' ,'\2\1')
Local $Array = StringRegExp($sSRERe, '[^\r\n]+' ,3)
For $i = 0 To UBound($Array) - 1
        Local $read 
        $read = $read&$Array[$i]
NEXT
;以下为测试结果:
MsgBox(0,0,$read)
 楼主| 发表于 2017-6-4 18:31:38 | 显示全部楼层
本帖最后由 pingfan5888 于 2017-6-4 18:36 编辑

回复 2# xzf680


   先谢谢了,,这样子后,连接成一个段落了,在替换成换行后可得到想要的结果,就是想问下,
,提供的例子,整个文件,每一行的格式对调后,能否不自动换行,
$text = StringRegExpReplace($text, '(.*)@@(.*)', '\2\1')  针对每一行。(全文)

单句没有问题。不会自动换行。
整个文件就会得到如下结果:
bookid/84698748">
上架感言(一些心里话)!!!</a></li>
bookid/88142003">
封推感言!</a></li>
bookid/345834257">
新书上传求收藏,求推荐啦!</a></li>
bookid/83138239">
第1章 第一份工</a></li>
bookid/83165990">
第2章 红色小马驹</a></li>
bookid/83176884">
第3章 掰手腕</a></li>
。。。。。。。。

需要得到的结果如下:

bookid/84698748">上架感言(一些心里话)!!!</a></li>
bookid/88142003">封推感言!</a></li>
bookid/345834257">新书上传求收藏,求推荐啦!</a></li>
bookid/83138239">第1章 第一份工</a></li>
bookid/83165990">第2章 红色小马驹</a></li>
bookid/83176884">第3章 掰手腕</a></li>
bookid/83193125">第4章 这小子够狠</a></li>
bookid/83203799">第5章 因祸得福</a></li>
bookid/83220296">第6章 送外卖</a></li>
bookid/83230976">第7章 异能初现</a></li>
bookid/83247060">第8章 法拉盛</a></li>
发表于 2017-6-4 18:58:43 | 显示全部楼层
StringRegExpReplace($sSource, '(?m)^(.+)@@(\V+)', '\2\1')
发表于 2017-6-4 19:01:42 | 显示全部楼层
你的代码感觉没问题呀,是不是你设置的宽不够?
如下图:




### 友情提示:本脚本由 Au3 正则测试工具 于 2017年06月04日18点48分11秒 自动生成,不保证其正确性,请自行修改测试 ###
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$string = _
'上架感言(一些心里话)!!!</a></li>@@bookid/84698748">' & @CRLF & _
'封推感言!</a></li>@@bookid/88142003">' & @CRLF & _
'新书上传求收藏,求推荐啦!</a></li>@@bookid/345834257">' & @CRLF & _
'第1章 第一份工</a></li>@@bookid/83138239">' & @CRLF & _
'第2章 红色小马驹</a></li>@@bookid/83165990">'
Local $sSRERe = StringRegExpReplace($string,'(.*)@@(.*)' ,'\2\1')
;以下为测试结果:

Example()
Func Example()
    ; 创建一个 GUI 及其各种控件.
    Local $hGUI = GUICreate("示例")
        GUICtrlCreateLabel("你的代码测试感觉没问题呀??",15,8,200,20)
        GUICtrlCreateEdit($sSRERe& @CRLF, 10, 32, 380, 350, $ES_AUTOVSCROLL + $WS_VSCROLL)

; 显示 GUI.
    GUISetState(@SW_SHOW, $hGUI)
        
            ; 循环到用户退出.
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop

        EndSwitch
    WEnd

    ; 删除先前创建的 GUI 和所有控件.
    GUIDelete($hGUI)
EndFunc   ;==>Example

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2017-6-4 20:01:52 | 显示全部楼层
谢谢两位大神,,可以了。

我自己的代码,也不知道哪出问题了。。就是会换行。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-20 00:29 , Processed in 0.076256 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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