我想使用在for循环中使用的DXL脚本编辑字符串数组的元素。该问题将在下面进行描述: 我想在每个大写字母的前面插入空格,并期待第一个大写字母的使用,并将其应用于字符串数组中的所有行。
示例:
有一个字符串数组:
AbcDefGhi
GhiDefAbc
DefGhiAbc
等
最后我希望看到的结果是:
Abc Def Ghi
Ghi Def Abc
Def Ghi Abc
等
谢谢!
答案 0 :(得分:0)
直接来自DXL手册。
Regexp upperChar = regexp2 "[A-Z]"
string s = "yoHelloUrban"
string sNew = ""
while (upperChar s) {
sNew = sNew s[ 0 : (start 0) - 1] " " s [match 0]
s = s[end 0 + 1:]
}
sNew = sNew s
print sNew
您可能需要调整一个事实,即您不希望将每个大写字母都替换为,而只希望那些不在字符串开头的大写字母替换。
答案 1 :(得分:0)
这是一个编写为函数的解决方案,您可以将其放入代码中。它逐个字符地处理输入字符串。始终按原样输出第一个字符,然后在任何后续大写字符之前插入一个空格。
为了提高效率,如果处理大量字符串或非常大的字符串(或同时处理两个字符串),则可以对该函数进行修改,以在最终返回字符串之前将其附加到缓冲区而不是字符串。
string spaceOut(string sInput)
{
const int intA = 65 // DECIMAL 65 = ASCII 'A'
const int intZ = 90 // DECIMAL 90 = ASCII 'Z'
int intStrLength = length(sInput)
int iCharCounter = 0
string sReturn = ""
sReturn = sReturn sInput[0] ""
for (iCharCounter = 1; iCharCounter < intStrLength; iCharCounter++)
{
if ((intOf(sInput[iCharCounter]) >= intA)&&(intOf(sInput[iCharCounter]) <= intZ))
{
sReturn = sReturn " " sInput[iCharCounter] ""
}
else
{
sReturn = sReturn sInput[iCharCounter] ""
}
}
return(sReturn)
}
print(spaceOut("AbcDefGHi"))