如何使用特定的开始和结束分隔符拆分字符串?

问题描述

公共类测试{

public static void main(String[] args) {

    String str = "My CID is #encode2#123456789#encode2# I am from India";

    String[] tokens = str.split("#encode2#");

    for (int i = 0; i < tokens.length; i++) {
        // prints the tokens
        System.out.println(tokens[i]);
    }
}

}

输出将是 我的客户 ID 是 123456789 我来自印度

但我只想要整个字符串中的 123456789,我想使用那个 123456789 数字进行加密。

我也使用 if(!"#encode2#".equals(text)) 条件,但仍然没有得到输出

如何写条件如需要从#encode2#右边部分开始并在#encode2#之前结束。

解决方法

使用 String 的 indexOflastIndexOf 方法查找两个 #encode2# 子字符串开始的索引。然后,使用 substring 获取这两个索引之间的字符串。

String str = "My CID is #encode2#123456789#encode2# I am from India";
String substring = "#encode2#";
int firstIdx = str.indexOf(substring);
int secondIdx = str.lastIndexOf(substring);
System.out.println(str.substring(firstIdx + substring.length(),secondIdx)); //123456789
,
    public String getToken() {

        String str = "My CID is #encode2#123456789#encode2# I am from India";

        int start = str.indexOf("#encode2#") + "#encode2#".length();
        int end = str.lastIndexOf("#encode2#");

        return str.substring(start,end);
    }

注意:此方法仅在您的字符串值中有两次“#encode2#”时有效。如果您需要多个令牌实例,这将不起作用。