2013-02-22 54 views
1

今天早些时候我问了一个问题,并从llbrink得到了一个非常快速的答案。在我花了几个小时试图找到答案之前,我真的应该问这个问题。从字符串中去除多余的内边距

所以 - 这里有另一个问题,我从来没有找到答案(虽然我已经创建了一个似乎非常cludgy变通)。

我的AHK程序要求用户输入登录名。程序然后将登录名与文件中现有的名称列表进行比较。

文件中的登录名可能包含空格,但在名称的开头没有空格。当用户输入名字时,他可以在开头包含空格。这意味着,当我的程序比较名称与文件中的名称时,它找不到匹配项(因为有多余的空格)。

我想找到从输入开始剥离空格的方法。

我的工作就是将输入字符串拆分成一个数组(它忽略前导空格),然后使用数组的第一个元素。这是我的代码:

name := DoStrip(name) 

DoStrip(xyz) ; strip leading and trailing spaces from string 
{ 
    StringSplit, out, xyz, `,, %A_Space% 
    Return out1 
} 

这似乎是一个很费力的方式来做到这一点 - 有没有更好的办法?

回答

3

如果您的示例适用于所有情况,我看不到您的示例有问题。

有一种简单得多的方法;只需使用Autotrim即可。

AutoTrim, On ; not required it is on by default 
my_variable = %my_variable% 

还有many其他differentwaysto trim字符串中的AutoHotkey, 你可以组合成有用的东西。

+0

谢谢阿明。我仔细观察了“修剪”,“剥离”等 - 但从未发现自动修剪。这只是工作。 – jandrew 2013-02-22 20:55:19

+0

@Armin,我刚刚添加了一个快速示例,可以为将来的访问者节省一笔旅费。 – FakeRainBrigand 2013-02-23 18:53:47

+0

@FakeRainBrigand您忘了添加AutoTrim,On。编辑时请准确。 – 2013-02-23 18:55:55

1

您还可以使用#LTrim#RTrim删除字符串开头和结尾的空格。

+0

我认为这是为了去除'延续部分'中字符串开头的空格 - 通常是删除Gui文本块中的缩进。我不能让它在单个变量上工作。 – jandrew 2013-02-23 11:27:38