有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中解析起始相同但结尾不同的字符串

我有一个类似"abc /123 /456"的字符串,我想把它分成两个刺:"abc 123""abc 456"

我试过:

String[] str = MESSAGE.split("/") 

但没有提供要求的结果。谁能跟我分享一下如何表演的想法吗


共 (3) 个答案

  1. # 1 楼答案

    在分割String之后,需要添加一点逻辑。 我会这样做:

    字符串s=“abc/123/456”; 字符串[]partsOfS=s.split(“/”); 字符串前缀=partsOfS[0]

    for (int i = 1; i < partsOfS.length; i++) {
        System.out.println(prefix + partsOfS[i]);
    }
    

    编辑

    对于前缀不是由/String的其他部分分隔,而是仅由空格分隔的情况,可能需要第二次拆分和第二次循环,如下所示:

        String s = "abc 123/ 456/";
    
    String[] splitBySpace = s.split(" ");
    String prefix = splitBySpace[0];
    
    String[] partsOfS = new String[splitBySpace.length - 1];
    
    for (int i = 1; i < splitBySpace.length; i++) {
        partsOfS[i - 1] = splitBySpace[i].replace("/", "");
    }
    
    for (int i = 0; i < partsOfS.length; i++) {
        System.out.println(prefix + " " + partsOfS[i]);
    }
    

    关于性能和编程风格,可能有更好的解决方案,但这是与您的示例String一起使用的

  2. # 2 楼答案

    在决定拆分它时,您做得很好,之后您应该将拆分数组的第一个元素与所有其他元素合并,以实现您想要的结果

    这里有一些代码让它更清晰

    public class main {
       public static void main(String[] args) {
           String MESSAGE = "abc /123 /456";
           String[] str = MESSAGE.split("/") ;
           String[] str2 = new String[str.length-1];
    
           System.out.println(str[0]);
    
           for ( int i=1 ; i<str.length ; i++) {
               str2[i-1] = str[0]+str[i];
           }
    
           for ( int i=0 ; i<str2.length ; i++) {
               System.out.println(str2[i]);
           }
    
       }
    }
    
  3. # 3 楼答案

    只要用你需要的任何方式把这些碎片粘在一起,就像这样:

    String[] str = MESSAGE.split(" /");
    String s1 = str[0] + " " + str[1];
    String s2 = str[0] + " " + str[2];
    

    还请注意,最好使用as pattern " /"分割字符串,也就是说,在斜杠之前有一个空格