如何在某些条件下拆分字符串

时间:2012-10-30 13:22:42

标签: java

我有一个跟随字符串

  

书籍/ EH / grayL88 / WilliamsMC88 :::微米。 Howard Williams :: P. A. Massey :: Jim A. Crammond :::数据库应用程序的基准测试。

我应该如何使用或换句话说使用什么,以便最后我可以

  

微米。霍华德威廉姆斯 - 数据库应用程序的基准测试。

     

P上。 A. Massey - 数据库应用程序的基准测试。

     

Jim A. Crammond - 数据库应用程序的基准测试。

由于

5 个答案:

答案 0 :(得分:2)

第一道:

  • 您可以先在:::的基础上拆分字符串。这将为您提供长度为3的数组。您会对数组的2nd3rd元素感兴趣。
  • 然后在2nd element上拆分数组的::。这将为您提供包含each name
  • 的数组
  • 2nd array进行迭代,并使用第一个数组的3rd element打印每个名称。

    String str = "books/eh/grayL88/WilliamsMC88:::M. Howard Williams::" + 
                 "P. A. Massey::Jim A. Crammond:::Benchmarking Prolog for " + 
                 "Database Applications.";
    
    String[] arr = str.split(":::");
    String[] innerArr = arr[1].split("::");
    
    for (String name: innerArr) {
        System.out.println(name + " -- " + arr[2]);
    }
    

输出: -

  

微米。霍华德威廉姆斯 - 数据库应用程序的基准测试   P. A. Massey - 数据库应用程序的基准测试。
  Jim A.Crammond - 数据库应用程序的基准测试。


第二种方式:

或者,您可以在:::?上分开。这将在:::::上拆分,这将仅获取第一个数组中的每个元素(仅适用于3个名称。更多信息,您应该更好地使用第一个数据)

    String[] arr = str.split(":::?");

    System.out.println(arr[1] + " - " + arr[4]);
    System.out.println(arr[2] + " - " + arr[4]);
    System.out.println(arr[3] + " - " + arr[4]);

输出: -

  

微米。 Howard Williams - 数据库应用程序的基准测试。左P.   A. Massey - 数据库应用程序的基准测试。
吉姆A.   Crammond - 数据库应用程序的基准测试。

答案 1 :(得分:2)

您可以尝试这样的事情:

String s = "books/eh/grayL88/WilliamsMC88:::M. Howard Williams::P. A. Massey::Jim A. Crammond:::Benchmarking Prolog for Database Applications.";

String split[] = s.split(":::");
String end = split[split.length - 1];

String[] names = split[1].split("::");

for (String name : names)
    System.out.println(name + " -- " + end);

输出:

  

微米。霍华德威廉姆斯 - 数据库应用程序的基准测试   P. A. Massey - 数据库应用程序的基准测试   Jim A. Crammond - 数据库应用程序的基准测试。

答案 2 :(得分:1)

尝试以下方面的内容: (伪代码......)

myString.remove("(.*/)+[^:]*:{3}");
lastString = myString.split(":::").takeLast();
array names = myString.split("([^:]*)+");
result = "";

for (i=0;i<name.size();result+=names[i++]+" -- "+lastString+"\n");

// do whatever with "result"...

没有免费赠品,永远不会...

答案 3 :(得分:0)

使用StringTokenizer。例如:

StringTokenizer tokenizer = new StringTokenizer(str, "://");
while (tokenizer.hasMoreTokens()) {
   String token = tokenizer.nextToken();
   // ... and do whatever you like with the token
}

答案 4 :(得分:0)

String str = "books/eh/grayL88/WilliamsMC88:::M. Howard Williams::P. A. Massey::" +
        "Jim A. Crammond:::Benchmarking Prolog for Database Applications.";
        String split[]=str.split(":::");
        String names[] = split[1].split("::");
        String sentence = split[2];
        for(String name : names){
            System.out.println(name + " -- " +sentence);
        }

输出

微米。霍华德威廉姆斯 - 数据库应用程序的基准测试 P. A. Massey - 数据库应用程序的基准测试 Jim A. Crammond - 数据库应用程序的基准测试。