我正在编写一个Coldfusion组件,它应该作为Java哈希表及其一些方法的包装器。我正在使用Coldfusion 8。
现在我的具体问题: 我已经实现了一个Java哈希表对象,我正在编写一个函数,该函数应该获取该哈希表的所有存储键并将它们存储在一个数组中,这样我就可以在Coldfusion应用程序中遍历该数组。
以下是我到目前为止所获得的功能:
<cffunction
name="getKeys"
access="public"
returntype="array"
output="false"
hint="Returns all existing keys in an array">
<cfscript>
var keyArray = arrayNew(1);
var e = myHashtable.keys();
while(e.hasMoreElements()) {
arrayAppend(keyArray, e.nextElement());
}
return keyArray;
</cfscript>
</cffunction>
我对Coldfusion相当新,我只是想知道我是否遵循正确的方法或完全错误。非常感谢每一个帮助或提示。
答案 0 :(得分:1)
我还没有在ColdFusion 8上尝试过此操作,但您应该可以使用java.util.Collections
list
方法从<cfscript>
hashtable = createObject("java","java.util.Hashtable");
hashtable.put("a", "ant");
hashtable.put("b", "bear");
hashtable.put("c", "cat");
arrayList = createObject("java", "java.util.Collections").list(hashtable.keys());
</cfscript>
<cfdump var="#arrayList#">
获取一系列关键名称。例如:
hashtable.values().toArray();
如果你想获得一系列值,你可以这样做:
$string = "hi my best friend #John How Are You?";
$arr = explode(" ",$string);
foreach($arr as $val){
if (strpos($val,'#') !== false) {
$result = str_replace("#","",$val);
}
}
echo $result;
这可能比循环和附加到ColdFusion数组更有效。