我有一个类似于csv的String数据,即String数据中有“;
”。但在我的情况下,String的末尾总是有一个“;
”。我想创建一个方法,从这个csv给出一个 number
的字符串。例如:
String csv = "145557;123456789012;Michael Robert;1000000;200000;;12/05/2011;;" ;
在这个字符串中有8个“columns
”。我说“列”两个“;
”之间的数据(第一列没有被两个“;”包围,但只有右边的那个)。
在此示例中,数据“Michael Robert
”具有number
2(如果我们从第一列的1开始,则为3)。
那么如何获取指定数量的数据(列)?
注意:我使用Java ME
答案 0 :(得分:2)
在J2ME中,您可以编写如下方法:
public class Main {
public static void main(String[] args) {
String csv = "145557;123456789012;Michael Robert;1000000;200000;;12/05/2011;;" ;
System.out.println(getColumnAt(csv, 0));
System.out.println(getColumnAt(csv, 1));
System.out.println(getColumnAt(csv, 2));
}
public static String getColumnAt(String csv, int column) {
int fromIndex = 0;
int col = 0;
while (col < column) {
fromIndex = csv.indexOf(";", fromIndex) + 1;
col++;
}
int toIndex = csv.indexOf(";", fromIndex);
return csv.substring(fromIndex, toIndex);
}
}
更新:顺便说一句,由于实现substring
的方式,最好是return new String(csv.substring(fromIndex, toIndex));
,否则子字符串将保存对原始字符串的引用,那么只要子字符串不能用GC,原始的字符串就不能用GC了。
答案 1 :(得分:2)
只需使用StringTokenizer:
StringTokenizer tok = new StringTokenizer(yourString,";");
column1 = tok.nextToken();
column2 = tok.nextToken();
...
Here你可以找到一个更复杂的例子。
此致 卢卡
答案 2 :(得分:-2)
csv.split(";")[2]; // returns "Michael Robert"
这使用String.split(String delimiter)
方法,该方法在分隔符周围分割字符串,返回包含结果子字符串的数组。
答案 3 :(得分:-2)
你的意思是这样的:
public TestClass()
{
String csv = "145557;123456789012;Michael Robert;1000000;200000;;12/05/2011;;" ;
System.out.println(splitString(csv,2));
}
public String splitString(String s, int getValueAt)
{
return s.split(";")[getValueAt];
}