-1
String str = "AlwinX-road-9:00pm-kanchana travels-25365445421";
String[] names = str.split("-");

次のような出力が必要です。

AlwinX-road
午後 9 時
カンチャナ旅行
25365445421

4

7 に答える 7

2
   Use pattern matching to match your requirement
    String str = "AlwinX-road-9:00pm-kanchana travels-25365445421"; 
    String regex = "(^[A-Z-a-z ]+)[-]+(\\d+:\\d+pm)[-]([a-z]+\\s+[a-z]+)[-](\\d+)";
    Matcher matcher = Pattern.compile( regex ).matcher( str);
    while (matcher.find( ))
    {
    String roadname = matcher.group(1);
    String time = matcher.group(2);
    String travels = matcher.group(3);
    String digits= matcher.group(4);
    System.out.println("time="+time);
    System.out.println("travels="+travels);
    System.out.println("digits="+digits);                           
    }
于 2012-10-04T17:18:56.083 に答える
0

最初の出力行に区切り文字を含めたいので、分割を行い、最初の 2 つの要素を-: -でマージできます。

String[] names = str.split("-");

System.out.println(names[0] + "-" + names[1])
for (int i = 2;i < names.length; i++) {
    System.out.println(names[i])
}
于 2012-10-04T16:30:01.333 に答える
0

最初の「-」が常に2つの部分の識別子の一部であると仮定して、それを行う1つの方法。

String str = "AlwinX-road-9:00pm-kanchana travels-25365445421";
String[] tokens = str.split("-");
String[] output = new String[tokens.length - 1];
output[0] = tokens[0] + '-' + tokens[1];
System.out.println(output[0]);
for(int i = 1; i < output.length; i++){ 
  output[i] = tokens[i+1];
  System.out.println(output[i]);
}
于 2012-10-04T16:44:13.327 に答える
0

このsplit()メソッドは、文字列内のダッシュとその他のダッシュを区別できませんAlwinX-road。すべてのダッシュを同じように扱います。結果の配列に対して何らかの後処理を行う必要があります。結合された配列の最初の 2 つの文字列が常に必要な場合は、それを行うことができます。文字列がより複雑な場合は、配列内の文字列を結合するロジックを追加する必要があります。

于 2012-10-04T16:31:59.940 に答える
0

あなたのフォーマットから、時間部分の直前に最初のものを分割したいと思います。次の方法で実行できます。

String str =yourString;
String beforetime=str.split("-\\d+:\\d+[ap]m")[0]; //this is your first token, 
                                                    //AlwinX-road in your example
String rest=str.substring(beforetime.length()+1);
String[] restNames=rest.split("-");

本当にすべてを 1 つの配列にまとめる必要がある場合は、以下のコードを参照してください。

String[] allTogether=new String[restNames.length+1];//the string with all your tokens
allTogether[0]=beforetime;
System.arraycopy(restNames, 0, allTogether, 1, restNames.length);
于 2012-10-04T16:44:43.193 に答える
0

分割したいようです(最初のダッシュ以外のすべてのダッシュを削除して)。

String str = "AlwinX-road-9:00pm-kanchana travels-25365445421";
String[] names = str.split("-");

for (String value : names)
{
    System.out.println(value);
}

したがって、次のものが生成されます。

AlwinX
road
9:00pm
kanchana travels
25365445421

"AlwinX" と "road" の間にダッシュがあるため、同様に分割されていることに注意してください。したがって、このケースを処理するにはカスタム ロジックが必要になります。これを行う方法の例を次に示します(私はStringTokenizerを使用しました):

StringTokenizer tk = new StringTokenizer(str, "-", true);
String firstString = null;
String secondString = null;
while (tk.hasMoreTokens())
{
    final String token = tk.nextToken();
    if (firstString == null)
    {
        firstString = token;
        continue;
    }
    if (secondString == null && firstString != null && !token.equals("-"))
    {
        secondString = token;
        System.out.println(firstString + "-" + secondString);
        continue;
    }
    if (!token.equals("-"))
    {
        System.out.println(token);
    }
}

これにより、次が生成されます。

AlwinX-road
9:00pm
kanchana travels
25365445421
于 2012-10-04T16:44:17.873 に答える
-1

「-」の代わりに「_」をセパレータとして使用する場合: AlwinX-road_9:00pm_kanchana travels_25365445421

新しいコード:

String str = new String("AlwinX-road_9:00pm_kanchana travels_25365445421");
String separator = new String("_");
String[] names = str.split(separator);
for(int i=0; i<names.length; i++){
    System.out.println(names[i]);
}
于 2012-10-04T16:49:27.533 に答える