如何解决有没有更优雅的方法可以将字符串转换为数组?
| 我想将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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。