我有字符串:
John Smith [birth. 1970-07-05] [Doctor degree from 2016-01-01]
我需要修改此字符串,只删除字符串的中间部分出生日期部分(在我的情况下为[birth. 1970-07-05]
),留下其他位:名字,姓氏和博士学位。
在 JasperReports 中,只允许输入所谓的“文本字段表达式”,所以我提出了这个:
$P{AUTHOR}.indexOf("[") < 0 ? $P{AUTHOR} : $P{AUTHOR}.substring(0,$P{AUTHOR}.indexOf("[")-1)
直到这个人没有任何学位才有效,所以它只删除出生日期,但是当学位出现时,它也会去除学位。
我遗失的东西。
答案 0 :(得分:1)
你可以试试这个:
$P{AUTHOR}.indexOf("[") < 0
? $P{AUTHOR}
: $P{AUTHOR}.substring(0,$P{AUTHOR}.indexOf("["))
+ ($P{AUTHOR}.indexOf("[", $P{AUTHOR}.indexOf("[") + 1) > -1
? $P{AUTHOR}.substring( $P{AUTHOR}.indexOf("[", $P{AUTHOR}.indexOf("[") + 1))
: "")
答案 1 :(得分:0)
第一个想到的是正则表达式:
$ P {AUTHOR} .replaceAll(Pattern.quote('[birth。')+'。*'+ Pattern.quote(']'),'')
答案 2 :(得分:0)
如果出生信息始终位于第二个位置,则拆分和连接就足够了:
'John Smith [birth. 1970-07-05] [Doctor degree from 2016-01-01]'
.split(/\[/)[0, 2] // split by open bracket, take the 1st and 3rd segment
.join('[') // join the segments back again
以上产生字符串John Smith [Doctor degree from 2016-01-01]