如何在两个逗号字符之间返回字符串的一部分?

时间:2015-03-03 10:42:56

标签: java regex string parsing comma

说我给出了一组看起来像这样的字符串:

0,test0,dummy
1,test,dummy
2,test1,dummy
3,test2,dummy
4,test3,dum,dum,dummy

我编写的代码只能返回最后一个","之前的内容:

public class RandomTest {
public static void main(String[] args) {
    String testFile = "synsets11.txt";
    In testIn = new In(testFile);
    while (testIn.hasNextLine()) {
        String line = testIn.readLine();
        String result = line.substring(0, line.lastIndexOf(","));
        List<String> synList = Arrays.asList(result.split(","));
        for (String i : synList) {
            System.out.println(i);
        }
    }
}
}

我打算做的只是返回第一个和第二个&#34;,#34;之间的字符串部分。字符,所以我上面的代码不适用于最后一行文本。我如何只返回第一个和第二个逗号之间的内容? 在这种情况下,只有test0,test,test1,test2和test3。

谢谢!

4 个答案:

答案 0 :(得分:6)

使用split()这样的方法:

public static void main(String[] args) {
    String s = "0,prop,dummy";
    System.out.println(s.split(",")[1]);
}

O / P:

prop

注意:您必须检查字符串是否包含至少1 ,(除非您想要ArrayIndexOutOfBoundsException:P)

答案 1 :(得分:1)

不是使用lastIndexOf,而是使用indexOf两次:

int pos = line.indexOf(',', line.indexOf(',')+1);
String result = line.substring(0, pos);

答案 2 :(得分:0)

您可以使用string.replaceAll功能。

string.replaceAll("(?m)^[^,]*,|,.*", "");

DEMO

String s = "0,test0,dummy\n" + 
        "1,test,dummy\n" + 
        "2,test1,dummy\n" + 
        "3,test2,dummy\n" + 
        "4,test3,dum,dum,dummy";
System.out.println(s.replaceAll("(?m)^[^,]*,|,.*", ""));

答案 3 :(得分:0)

StringTokenizer怎么样?

public class RandomTest {
public static void main(String[] args) {
    String testFile = "synsets11.txt";
    In testIn = new In(testFile);
    StringTokenizer stok = null;
    while (testIn.hasNextLine()) {
        String line = testIn.readLine();
        stok = new StringTokenizer(line,",");

        for(int i = 0; i< stok.countTokens() ; i++){
             String str = st.nextToken();  
                if( i == 1){
                       System.out.println(str);
                   }else if( i > 1){break;}
            }// for
       }// while
   }//main
}//class