有没有更优雅的方法可以将字符串转换为数组?

| 我想将11位数字的字符串转换为数组。 ColdFusion 9中有更优雅的方法吗?
local.string = [];

for (local.i = 1; local.i <= len(arguments.string); local.i++)
{
    local.string[ local.i ] = mid(arguments.string, local.i, 1);
}
如果我的字符串是
12345
,那么数组将看起来像
string[1] = 1; string[2] = 2
,依此类推...     
已邀请:
我认为有一种优雅的方法可以在任何版本的ColdFusion中使用。 诀窍是使用CF \的列表操作功能-如果您指定\“ \”的定界符(即什么都没有),它将把字符串的每个字符视为一个列表项。 所以您想要的是:
local.string = listToArray(arguments.string, \"\");
这将为您提供一系列字符...     
这在CF8上有效,并且不依赖于CF9中的“错误”:
stringAsList = REReplace( string,\"(.)\",\"\\1,\",\"ALL\" );
array = ListToArray( stringAsList );
    
如果您确实想使用Java方法String.split(),它将返回String [],因此您必须将其值复制到新数组中,例如。
myArray = arrayNew(1)
+
myArray.addAll( myStringArr )
。     
有趣的是,似乎可以使用.split()java方法执行类似的操作并获得相似的结果。 有一点背景知识:由于CF是基于Java构建的,因此可以利用许多底层的Java方法和类。根据Adobe的Rupesh Kuman(http://coldfused.blogspot.com/2007/01/extend-cf-native-objects-harnessing.html)的说法,CF数组是java.util.List的实现,因此所有列表方法也可用于CF阵列。 .split()方法是更有用的方法之一。这将获取一个字符串,并将其转换为一个基于0或多个字符的任意定界符的数组。 这是我的工作:将列表设置为11位数字,使用split方法创建数组,然后显示结果。
    <cfset testList = \"12345678901\" />
    <cfset testArray = testList.split(\"\") />
    <cfset request.cfdumpinited = false />
    <cfdump label=\"testArray\" expand=\"true\" var=\"#testArray#\"/>
    <cfabort />
如果运行此命令,则会看到最后得到一个12个项目的数组,并且第一个索引项目为空。只需使用ArrayDelete()或ArrayDeleteAt()删除那一个,就可以了。自CFMX 6起,此版本应可用于所有版本的ColdFusion。     

要回复问题请先登录注册