字符串反转与字符串竖向排版
/*
Right:1—竖排从右始排版0—竖排从左始排版
Rows:每列字数
U:精确分割字符串,很多双字节汉字用StrSplit分割不行 U参为1时用正则精准分割
*/
;;字符串竖向排版
VerticalString(ByRef String,Right=0,delimiter:="",U=0,Rows=12){
index:=1, result:="",tarr:=[]
If (!String)
return []
String:=RegExReplace(String,"(*BSR_ANYCRLF)\R|\t")
if U {
While index:=RegExMatch(String, "O).", match, index){
if match.Value
tarr.push(match.Value), index+=match.Len
}
}else
tarr:=StrSplit(String)
Col:=Ceil(objCount(tarr)/Rows)
Loop, % Rows
{
Index:=A_Index
Loop, % Col
{
result.=tarr[(Right?Col-A_Index:A_Index-1)*Rows+Index]?tarr[(Right?Col-A_Index:A_Index-1)*Rows+Index] delimiter:A_Space A_Space A_Space delimiter
}
result:=Trim(result,delimiter) "`r`n"
}
String:=result,result:=""
Return String
}
chars=
(
赵客缦胡缨,吴钩霜雪明。
银鞍照白马,飒沓如流星。
十步杀一人,千里不留行。
事了拂衣去,深藏身与名。
闲过信陵饮,脱剑膝前横。
将炙啖朱亥,持觞劝侯嬴。
三杯吐然诺,五岳倒为轻。
眼花耳热后,意气素霓生。
救赵挥金槌,邯郸先震惊。
)
MsgBox % VerticalString(chars,1,"",1)
;;字符串反转
ReverseString(ByRef String) {
String .= "", DllCall("msvcrt.dll\_wcsrev", "Ptr", &String, "CDecl")
return String
}
MsgBox % ReverseString("十步杀一人,千里不留行。")
学习了
大佬这代码很好用