【问题标题】:Parse string in java with the same start but different ending用相同的开头但不同的结尾解析java中的字符串
【发布时间】:2018-08-16 13:08:47
【问题描述】:

我有像"abc /123 /456" 这样的字符串,我想把它分成两个字符串:"abc 123""abc 456"

我试过了:

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

但没有提供所需的结果。有人可以与我分享如何执行它的任何想法吗?

【问题讨论】:

  • 你能给我们看更多的代码吗?我想看看你是如何初始化MESSAGE 字符串
  • “但没有提供所需的结果”。请更新您的问题以显示结果。

标签: java parsing text


【解决方案1】:

只需按照您需要的任何方式将各个部分粘在一起,如下所示:

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

还要注意,最好使用 as 模式 " /" 分割字符串,也就是说,在斜杠前加一个空格。

【讨论】:

  • 在方法中使用它会使其更有用。
【解决方案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】:

    拆分String 后,您需要添加一点逻辑。 我会这样做:

    字符串 s = "abc /123 /456"; String[] 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

    【讨论】:

    • 但是如果字符串像 String s = "abc 123/ 456/",你将如何解析它
    • @RatiborShakhov 不客气......只要接受它,也许就投票吧 ;-)
    • @RatiborShakhov 在这种情况下,您将不得不将它们拆分两次!这是一项更复杂的任务。也许我可以尽快对我的问题进行编辑。
    • @RatiborShakhov 查看我的编辑,了解先按空间分割的可能性。
    猜你喜欢
    • 2012-12-03
    • 2023-03-16
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2018-10-29
    相关资源
    最近更新 更多