如何在由“;”分隔的String中获取特定字符串?

时间:2011-09-30 09:16:55

标签: java java-me

  

可能重复:
  How do I split strings in J2ME?

我有一个类似于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

4 个答案:

答案 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];
}