如何使用Java或Groovy删除String的一部分

时间:2016-04-12 12:56:25

标签: java groovy substring

我有字符串:

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)

直到这个人没有任何学位才有效,所以它只删除出生日期,但是当学位出现时,它也会去除学位。

我遗失的东西。

3 个答案:

答案 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]