【发布时间】:2022-11-10 18:16:43
【问题描述】:
所以我有一些长度的字符串(未指定为要求)说随机长度。 例子:
dev.ca.ind.clientaddress-completed-events.dom.0.ind-isl-clientaddress-completed.dlq
在这里,我必须跳过三个字符串,即 dev.ca.ind。 (我想要这些字符串之后和之前的内容).dom
即clientaddress-completed-events(我想从整个字符串中获取这个字符串)
第二个例子:
dev.ca.ind.insurance.client.insurance.dom.0
想要在 ind 之后和 dom 之前获取“insurance.client.insurance”,而且这个 ind 也可以是 (gb,grs,all,ind) 并且 dom 也可以是 (raw,cdc)
我该怎么做呢 ?我无法知道如何做到这一点。请帮忙 :)
我试过用“。”分割这些字符串。但是如示例中所示,某些字符串的模式不同,这会产生一些错误,所以我想到了这种方式,但无法实现。
String[] splitName = topics.get(PROJECT+i).get(TOPIC_NAME).split("\\.");
但这并不好,因为我必须使用硬编码的索引值来分配子字符串。例如- ss.set(splitName[2]+splitName[3])
更多示例:
dev.ca.xfunc.cxo.rawleads.dom.0 - get "cxo.rawleads"
dev.ca.epm.ceapm.zab.dom.0 - get "ceapm.zab"
dev.ca.ind.cx.talas.cdc.0 - get "cx.talas"
dev.ca.cif.source-system-client.dom.0 -get "source-system-client"
dev.ca.gb.claim.providers.int.0 -get "claim.providers"
【问题讨论】:
-
只需遍历字符串(或使用
indexOf),同时跟踪您已经遇到了多少.,然后保存调用substring所需的开始和结束索引 - 这不应该超过一个几行代码要做 -
是的,您是正确的,但问题是在 3 个点之后(。)名称开始,在某些情况下,名称中也存在(。),因此很难确定名称。我添加了更多示例。我需要在 3 个点之后和 dom/cdc/int 之前的东西。