6

次の文字列があります

books/eh/grayL88/WilliamsMC88:::M. Howard Williams::PA Massey::Jim A. Crammond:::データベース アプリケーションのベンチマーク プロローグ。

どのように使用すればよいか、つまり、最終的に取得できるように何を使用する必要がありますか

M. Howard Williams -- データベース アプリケーションのプロローグのベンチマーク。

PA Massey -- データベース アプリケーションの Prolog のベンチマーク。

Jim A. Crammond -- データベース アプリケーションのベンチマーク プロローグ。

ありがとう

4

5 に答える 5

2

第 1 の方法:

  • まず、に基づいて文字列を分割できます:::2ndこれにより、長さ 3 の配列が得られます。配列のと3rd要素に興味があるでしょう。
  • 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 -- データベース アプリケーションのプロローグのベンチマーク。
PA Massey -- データベース アプリケーションの Prolog のベンチマーク。
Jim A.Crammond -- データベース アプリケーションのベンチマーク プロローグ。


第 2 の方法:

または、 で分割することもできます:::?::これは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 - データベース アプリケーションのベンチマーク プロローグ。
PA Massey - データベース アプリケーションのベンチマーク プロローグ。
Jim A. Crammond - データベース アプリケーションのベンチマーク プロローグ。

于 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 -- データベース アプリケーションのプロローグのベンチマーク。
PA Massey -- データベース アプリケーションの Prolog のベンチマーク。
Jim A. Crammond -- データベース アプリケーションのベンチマーク プロローグ。

于 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 -- データベース アプリケーションのプロローグのベンチマーク。
PA Massey -- データベース アプリケーションの Prolog のベンチマーク。
Jim A. Crammond -- データベース アプリケーションのベンチマーク プロローグ。

于 2012-10-30T13:49:31.480 に答える