【问题标题】:Java: Getting substring from a string after and before particular charactersJava:从特定字符之后和之前的字符串中获取子字符串
【发布时间】: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 之前的东西。

标签: java string substring


【解决方案1】:

如果是我,我会使用 split 函数返回一个元素数组,如下所示:

String target = "dev.ca.ind.clientaddress-completed-events.dom.0.ind-isl-clientaddress-completed.dlq"    
String keyTokens = target.split(".")

这将为您提供一个 keyTokens 数组,如下所示: “开发” “约” “和” “客户地址完成事件” “dom” “0” “ind-isl-客户端地址完成” “dlq”

然后遍历数组,寻找“isInteger”返回 true 的第一个字符串。

快乐编码。 :-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2015-06-06
    • 1970-01-01
    相关资源
    最近更新 更多