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

Java 如何使用特定的开始和结束分隔符拆分字符串?,java,string,collections,split,underscore-java,Java,String,Collections,Split,Underscore Java,公开课考试{ 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++) { //

公开课考试{

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]);
    }
}
publicstaticvoidmain(字符串[]args){
String str=“我的CID是#encode2#123456789#encode2#我来自印度”;
String[]tokens=str.split(“#encode2#”);
for(int i=0;i
}

输出将是 我的CID是 123456789 我来自印度

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

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

如何从#encode2#右侧部分开始编写need strat并在#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

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

为什么不忽略
令牌
数组中的最后一个元素?
System.out.println(令牌[0])?字符串未修复。例如,有时用户键入大字符串。我是Java,我喜欢编码#encode2#147589545#encode2#。我也喜欢学习新的编程。在这种情况下,标记[0]将不起作用。您也可以使用
int firstIdx=str.indexOf(substring)+substring.length(),secondIdx=str.indexOf(substring,firstIdx)…str.substring(firstIdx,secondIdx)
当出现两个以上的实例时,搜索下一个实例而不是最后一个实例具有不同的语义,而对于两个实例,性能略有不同,这取决于预期哪个部分是较大的。由OP决定哪个更合适。@Holger谢谢。我写这篇文章是假设有两次出现
#encode2#
非常感谢您解决了我的问题。真正地helpful@Goku别担心。如果答案解决了您的问题,请将其标记为正确,因为其他人正在寻找解决方案。
    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);
    }