在java中拆分字符串

时间:2015-04-10 06:16:14

标签: java string split

我输入如下

Date    Place  total trains
monday,chennai,10
tuesday,kolkata,20
wednesday,banglore,karnataka,30

我想拆分这些数据。到目前为止,我已经使用了

String[] data = input.split(",");

如果我喜欢上面的话,那我就得到了

index[0]  index[1]                  index[2]
monday     chennai                    10
tuesday     kolkata                   20
wednesday   banglore                 karnataka          30

但我想要输出如下

index[0]     index[1]                    index[3]
wednesday     banglore,karnataka          30

有没有办法实现这个

5 个答案:

答案 0 :(得分:0)

根据第一个逗号或最后一个逗号分割您的输入。

String s = "wednesday,banglore,karnataka,30";
String parts[] = s.split("(?<=^[^,]*),|,(?=[^,]*$)");
System.out.println(Arrays.toString(parts));

输出:

[wednesday, banglore,karnataka, 30]

答案 1 :(得分:0)

如果使用正则表达式拆分字符串,则基本上可以告诉应该剪切字符串的位置。这必然会削减你与正则表达式相匹配的东西。这意味着如果您在\w处拆分,则每个字符都是一个拆分点,并返回它们之间的子串(全部为空)。 Java会自动删除尾随的空字符串,如文档中所述。

这也解释了为什么延迟匹配\w*?将为您提供每个字符,因为它将匹配任何字符(零宽度)之间(和之前和之后)的每个位置。剩下的是字符串本身的字符 尝试
String[] data = input.split("(?<=^\\w+),|,(?=\\d+)");

一些好的解释是here

答案 2 :(得分:0)

坚持基础知识,您的数据必须采用这种格式。

Date,Place,total trains
"monday","chennai","10"
"tuesday","kolkata","20"
"wednesday",'banglore,karnataka","30"

因为,如果分隔符和数据都相同,那么要编写一个复杂的代码来处理,只需将数据放在双引号中即可。 csv文件也使用此功能。

答案 3 :(得分:0)

假设你知道“,”的位置,你可以摆脱它。

下面的程序用“”替换第二个实例,因此string.split()可以根据需要使用

需要导入import java.util.regex。*;

===========

public static void main(String args[]){

StringBuffer sb = new StringBuffer();
String s = "wednesday,banglore,karnataka,30";
Pattern p = Pattern.compile(",");
Matcher m = p.matcher(s);
int count = 1;
while(m.find()) {
      if(count == 2 ){

        m.appendReplacement(sb, " ");
    }
    count++;

}
m.appendTail(sb);

System.out.println(sb);

s= sb.toString();
String[] data = s.split(",");

System.out.println( data[0] + "-" + data[1] + "-" +data[2] );


    }//psvm

输出

星期三,banglore karnataka,30岁 周三-banglore karnataka-30

答案 4 :(得分:-1)

此代码适用于您:

public static void main(String[] args) {

    String s1 = "wednesday,banglore,karnataka,30";
    String s2 = "monday,chennai,10";
    String[] arr1 = s1.split("(?<=^\\w+),|,(?=\\d+)");
    for(String ss : arr1)
        System.out.println(ss);
    System.out.println();
    String[] arr2 = s2.split("(?<=^\\w+),|,(?=\\d+)");
    for(String ss : arr2)
        System.out.println(ss);
}

O / P:

wednesday
banglore,karnataka
30

monday
chennai
10