说我给出了一组看起来像这样的字符串:
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。
谢谢!
答案 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)^[^,]*,|,.*", "");
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