2015-12-08 3 views
0

У меня есть пункт вроде этого:обращение Пункт с помощью AutoHotkey

Rohit is a good boy. 
He loves poetry. 
He also sings. 

Я хочу обратить пункт вроде этого:

.boy good a is Rohit 
.poetry loves He 
.sings also He 

У меня есть этот рабочий скрипт this site.

Loop, Parse, clipboard, %A_Space% 
    new := RegExReplace(A_LoopField,"(.*)(\p{P})$","$2$1") A_Space new 


Msgbox % Trim(new,A_Space) 

Но он может только перевернуть одну линию за раз. Я не могу изменить сценарий для своей цели.

+1

Это алгоритмически разрешимый вопрос, который содержит множество примеров в Интернете, и я не вижу попыток его решения в вашем сообщении. Stack Overflow позволяет решить проблемы с вашим кодом, а не предоставлять полные решения. – wOxxOm

ответ

0

Прокрутите строки и создайте массив, содержащий все слова текущей строки, затем прокрутите слова назад. И если слово заканчивается символом пунктуации, поместите его в начало слова.

text = 
(
Rohit is a good boy. 
He loves poetry. 
He also sings. 
) 

punctuationCharArray := [".",",","-",":",";","!","?"] 
reversedText := "" 
Loop, parse, text, `n, `r 
{ 
    line := A_LoopField 
    wordArray := StrSplit(line, " ") 
    i := wordArray.MaxIndex() 
    While (i>0) { 
     rawWord := wordArray[i] 
     punctuationChar := "" 
     Loop % punctuationCharArray.MaxIndex() { ;check if the last character of the word is one of the specified punctuation chars 
      If (SubStr(rawWord, -0) = punctuationCharArray[A_Index]) { 
       punctuationChar := punctuationCharArray[A_Index] 
       Break 
      } 
     } 
     word := (punctuationChar ? SubStr(rawWord, 1, -1) : rawWord) ;if there is a punctuation char in the end, omit that 
     reversedText .= punctuationChar . word . " " ;add the current (punctuation char), word and a space to the output text variable. 
     i-- 
    } 
    reversedText .= "`r`n" ;add a new line 
} 
MsgBox % reversedText 

Выход:

.boy хороший является Рохит
.poetry любит,
.sings также Он

Следующим шагом будет реверс скобки тоже.

Смежные вопросы