String str = "AlwinX-road-9:00pm-kanchana travels-25365445421";
String[] names = str.split("-");
我想要输出如下:
AlwinX道路
下午9:00
kanchana旅行
25365445421
答案 0 :(得分: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);
}
答案 1 :(得分:0)
由于您希望在第一个输出行中包含分隔符,您可以执行拆分,并将前两个元素与-
合并: -
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 :(得分:0)
split()
方法无法区分AlwinX-road
中的短划线和字符串中的其他短划线,它会将所有短划线视为相同。您需要对生成的数组进行某种后处理。如果你总是需要连接数组中的前两个字符串,你可以这样做。如果你的字符串更复杂,你需要添加额外的逻辑来连接数组中的字符串。
答案 3 :(得分:0)
你可以采用一种方法,假设第一个' - '始终是两部分标识符的一部分。
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]);
}
答案 4 :(得分: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
答案 5 :(得分: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("-");
如果你真的需要在一个数组中一起使用,那么请看下面的代码:
String[] allTogether=new String[restNames.length+1];//the string with all your tokens
allTogether[0]=beforetime;
System.arraycopy(restNames, 0, allTogether, 1, restNames.length);
答案 6 :(得分:-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]);
}