gpt4 book ai didi

java - 速度模板从数组中删除元素

转载 作者:行者123 更新时间:2023-11-30 06:53:03 25 4
gpt4 key购买 nike

我试图获取速度模板中删除的数组的最后一个元素,然后将其连接到字符串中并在下面的“className”:键中显示结果:

    #set($elem = '"System.NotImplementedException: Test Exception')
#set($trace = $elem.replace('"',""))
#set($tracearray = $trace.split("\."))
#set($arraysize = $tracearray.size())
#set($lastelem = $tracearray.size() - 1)
{
"className":$tracearray.remove($lastelem).toString(),
"method":"$tracearray[$lastelem]"
}#if($foreach.hasNext),#end
#end
]

我尝试了几种不同的方法来让数组删除元素并将其连接到一个字符串中,但到目前为止还没有任何运气。

从上面的示例中,我正在寻找要实现的以下输出。

{
"className":"System",
"method":"NotImplementedException: Test Exception"
}

$elem 变量将保存不同长度的字符串,并且其中有不同数量的 . 进行分割,因此数组的长度会有所不同.

最佳答案

如果您只需要删除最后一个元素,为什么还要拆分整个字符串呢?您只需进行一些解析即可提取类名:

#set($elem = '"System.NotImplementedException: Test Exception')                                                                                                                                                 
#set($trace = $elem.replace('"',""))
#set($dot = $trace.lastIndexOf('.'))
#set($className = $trace.substring(0, $dot))
#set($method = $trace.substring($dot + 1))
{
"className": "$className",
"method": "$method"
}

或者,为了适应末尾的消息可以包含一个点的事实:

#set($elem = '"System.NotImplementedException: Test Exception')                                                                                                                                                 
#set($trace = $elem.replace('"',""))
#set($colon = $trace.indexOf(':'))
#set($dot = $trace.lastIndexOf('.', $colon))
#set($className = $trace.substring(0, $dot))
#set($method = $trace.substring($dot + 1))
{
"className": "$className",
"method": "$method"
}

使用您选择的方法,您将需要另一个工具来用“.”连接数组元素。综上所述,如果您碰巧能够使用自定义工具填充 Velocity 上下文,则使用此自定义工具可以更轻松地完成所有这些工作。

关于java - 速度模板从数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42378967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com