2013-09-26 124 views
0

我正在使用输入框从用户请求具有“sometext5”形式的字符串。我想通过regexp把它分成一个字符串组件的变量和一个数字的变量。该号码应在循环中使用。Autohotkey:将连接字符串拆分为字符串和数字

下刚刚返回“0”,甚至当我在表单中输入一个字符串“itemize5”

!n:: 
InputBox, UserEnv, Environment, Please enter an environment!, , 240, 120 
If ErrorLevel 
    return 
Else 
    FoundPos := RegExMatch(%UserEnv%, "\d+$") 
    MsgBox %FoundPos% 
retur 

ň

回答

1
  1. FoundPos,顾名思义,包含的位置最左边出现的针。它确实有而不是包含任何你想要与你的正则表达式匹配的东西。
  2. 将变量内容传递给函数时,请勿将变量名称用百分号(如%UserEnv%)括起来。
  3. 您的正则表达式\d+$只会匹配字符串末尾的数字,而不是前面的文本。

一种可能的解决方案:

myText := "sometext55" 
if(RegExMatch(myText, "(.*?)(\d+)$", splitted)) { 
    msgbox, Text: %splitted1%`nNumber: %splitted2% 
} 

docs描述,splitted将被设置为伪阵列(splitted1splitted2 ...),与每个元件包含的匹配子模式的正则表达式(位于圆括号之间的东西)。

+1

2.是我需要的提示。最后,我设法完成了整个脚本:http://uweziegenhagen.de/?p = 2763 –