6

我有一个以下字符串

书籍/eh/grayL88/WilliamsMC88:::M。Howard Williams::PA Massey::Jim A. Crammond:::Benchmarking Prolog for Database Applications。

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

M. Howard Williams - 数据库应用程序的基准测试 Prolog。

PA Massey -- 数据库应用程序的基准测试 Prolog。

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

谢谢

4

5 回答 5

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]);
    }
    

输出: -

M. Howard Williams - 数据库应用程序的基准测试 Prolog。
PA Massey -- 数据库应用程序的基准测试 Prolog。
Jim A.Crammond - 数据库应用程序的基准测试 Prolog。


第二种方式:

或者,您可以拆分:::?. 这将在::or上拆分:::,这将仅在您的第一个数组中获取每个单独的元素(仅适用于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]);

输出: -

M. Howard Williams - 数据库应用程序的基准测试 Prolog。
PA Massey - 数据库应用程序的基准测试 Prolog。
Jim A. Crammond - 数据库应用程序的基准测试 Prolog。

于 2012-10-30T13:29:13.710 回答
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);

输出:

M. Howard Williams - 数据库应用程序的基准测试 Prolog。
PA Massey -- 数据库应用程序的基准测试 Prolog。
Jim A. Crammond - 数据库应用程序的基准测试 Prolog。

于 2012-10-30T13:30:47.220 回答
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"...

没有免费赠品,从来没有...

于 2012-10-30T13:43:33.557 回答
0

使用 StringTokenizer。例如:

StringTokenizer tokenizer = new StringTokenizer(str, "://");
while (tokenizer.hasMoreTokens()) {
   String token = tokenizer.nextToken();
   // ... and do whatever you like with the token
}
于 2012-10-30T13:47:35.803 回答
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);
        }

输出 :

M. Howard Williams - 数据库应用程序的基准测试 Prolog。
PA Massey -- 数据库应用程序的基准测试 Prolog。
Jim A. Crammond - 数据库应用程序的基准测试 Prolog。

于 2012-10-30T13:49:31.480 回答