【问题标题】:How to get a specific string inside a String delimited by ";"? [duplicate]如何在由“;”分隔的字符串中获取特定字符串? [复制]
【发布时间】:2011-09-30 09:16:55
【问题描述】:

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

我有一个类似于 csv 的字符串数据,即字符串数据中有“;”。但就我而言,字符串末尾总是有一个“;”。我想创建一个方法,它在这个 csv 的某个 number 处给出一个字符串。例如:

String csv = "145557;123456789012;Michael Robert;1000000;200000;;12/05/2011;;" ;

在这个字符串中有 8 个“columns”。我说“列”两个“;”之间的数据(第一列没有被两个“;”包围,而只有右边的那个)。

在本例中,数据“Michael Robert”具有number 2(如果第一列从 1 开始,则为 3)。

那么如何获取指定数量的数据(列)呢?

注意:我使用 Java ME

【问题讨论】:

标签: java java-me


【解决方案1】:

在 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。

【讨论】:

  • 我说我用的是 J2ME ,不是 J2SE !!!
【解决方案2】:

只需使用 StringTokenizer:

StringTokenizer tok = new StringTokenizer(yourString,";");
column1 = tok.nextToken();
column2 = tok.nextToken();
...

Here你可以找到一个更复杂的例子。

问候, 卢卡

【讨论】:

    【解决方案3】:
    csv.split(";")[2]; // returns "Michael Robert"
    

    这使用String.split(String delimiter) 方法,该方法在分隔符周围分割字符串,返回一个包含结果子字符串的数组。

    【讨论】:

    • 我说我用的是 J2ME ,不是 J2SE !!!
    【解决方案4】:

    你的意思是这样的:

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

    【讨论】:

    • String.split() 在 J2ME 上不可用
    • 我应该读到问题的结尾:o
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 2016-07-15
    相关资源
    最近更新 更多