2

分割したい次のデータがあります。

(1,167,2,'LT2A',45,'Weekly','1,2,3,4,5,6,7,8,9,10,11,12,13'),

各値を取得するには:

1
167
2
'LT2A'
45
'毎週'
'1,2,3,4,5,6,7,8,9,10,11,12,13'

私は Scanner クラスを使用してそれを行い区切り文字として , を使用しています。しかし、最後の文字列が原因で問題に直面しています: ('1,2,3,4,5,6,7,8,9,10,11,12,13').

したがって、このデータを分割する方法についていくつか提案をお願いします。
区切り文字として ,' も使用してみましたが、文字列には '' のないデータが含まれています。

質問は私のニーズに非常に固有のものですが、このデータを分割する方法について誰かが提案してくれれば幸いです。

ありがとう!

4

3 に答える 3

2

たとえば、単純なロジックを使用できます。

    String str="1,167,2,'LT2A',45,'Weekly','1,2,3,4,5,6,7,8,9,10,11,12,13'";
    Scanner s = new Scanner(str);
    s.useDelimiter(",");
    while(s.hasNext())
    {
        String element = s.next();
        if(element.startsWith("'") && ! element.endsWith("'"))
        {
            while(s.hasNext())
            {
                element += "," + s.next();
                if(element.endsWith("'"))
                    break;
            }
        }
        System.out.println(element);
    }
于 2013-01-08T12:00:35.097 に答える
1

あなたの場合にできる最善のことは、最初に " " を使用して'分割し、次に " "" 区切り文字を使用して分割することです。次のコードのように:

String cc = "(1,167,2,'LT2A',45,'Weekly','1,2,3,4,5,6,7,8,9,10,11,12,13'),";

Scanner s = new Scanner(cc);
  try
  {
     while (s.hasNextLine())
     {
        String[] tokens = s.nextLine().split("'"); //split it using ' delimiter 
        for (int i = 0; i < tokens.length; i++)
        {
           String[] ss = tokens[i].split(","); // split it using " delimiter 
           // do the processing for tokens here
        }
     }
  }
  finally
  {
     s.close();
  }
于 2013-01-08T11:59:36.253 に答える
1

試す

    String s = "1,167,2,'LT2A',45,'Weekly','1,2,3,4,5,6,7,8,9,10,11,12,13'";
    Scanner sc = new Scanner(s);
    sc.useDelimiter(",");
    while (sc.hasNext()) {
        String n = sc.next();
        if (n.startsWith("'") && !n.endsWith("'")) {
            n = n + sc.findInLine(".+?'");
        }
        System.out.println(n);
    }
}
于 2013-01-08T12:10:33.927 に答える