pingfan5888 发表于 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)就没有问题。

xzf680 发表于 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)

pingfan5888 发表于 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>

afan 发表于 2017-6-4 18:58:43

StringRegExpReplace($sSource, '(?m)^(.+)@@(\V+)', '\2\1')

xzf680 发表于 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

pingfan5888 发表于 2017-6-4 20:01:52

谢谢两位大神,,可以了。

我自己的代码,也不知道哪出问题了。。就是会换行。。
页: [1]
查看完整版本: 【已解决】字符串前后对调问题请教,谢谢!