String str = "AlwinX-road-9:00pm-kanchana travels-25365445421";
String[] names = str.split("-");
次のような出力が必要です。
AlwinX-road
午後 9 時
カンチャナ旅行
25365445421
String str = "AlwinX-road-9:00pm-kanchana travels-25365445421";
String[] names = str.split("-");
次のような出力が必要です。
AlwinX-road
午後 9 時
カンチャナ旅行
25365445421
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);
}
最初の出力行に区切り文字を含めたいので、分割を行い、最初の 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])
}
最初の「-」が常に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]);
}
このsplit()
メソッドは、文字列内のダッシュとその他のダッシュを区別できませんAlwinX-road
。すべてのダッシュを同じように扱います。結果の配列に対して何らかの後処理を行う必要があります。結合された配列の最初の 2 つの文字列が常に必要な場合は、それを行うことができます。文字列がより複雑な場合は、配列内の文字列を結合するロジックを追加する必要があります。
あなたのフォーマットから、時間部分の直前に最初のものを分割したいと思います。次の方法で実行できます。
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);
分割したいようです(最初のダッシュ以外のすべてのダッシュを削除して)。
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
「-」の代わりに「_」をセパレータとして使用する場合: 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]);
}