-4

我有类似的字符串",yes,,,,,,,,,,,,,",它说 option2 是从 15 个选项中选择的。这里,逗号,代表一个选项;如果它被选中,那么一些数据将代替选项。我需要阅读这个字符串并获得确切的选项选择值。在上面它应该是选项2。我该怎么做?

我在数据库中有 15 个选项,从这些选项中选择的数据在这里被替换,并且,没有选择。

或者,换个角度看,有 15 个字段用逗号分隔。一个字段(在示例中为第二个字段)具有非空值;其他都是空的。如何确定第一个不为空的字段?

4

4 回答 4

1

试试 String.split(",") - 这将返回 String[]

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String%29

公共类拆分{

public static void main(String [] args) {
    String [] options = args[0].split(",",15);
    for(int i = 0; i < options.length; i++) {
        System.out.printf("option %d = [%s]\n", i, options[i]);
    }
}

}

于 2012-10-17T10:45:01.437 回答
0

如果您String始终遵循您指定的格式,则可以使用String.split(). 例如,

String[] split = ",yes,,,,,,,,,,,,,".split(",");
System.out.format("The chosen data is in Option %d and is '%s'%n", split.length, split[split.length - 1]);

印刷

The chosen data is in Option 2 and is 'yes'
于 2012-10-17T10:38:36.247 回答
0

如果我理解正确,你会得到一串逗号,并且在两个逗号之间有一些像“是”这样的词。您的任务是检索该词的索引,即该词前的逗号数(加 1)。

首先,选项的编码是非常愚蠢的,所以如果它是你的责任,那就改变它。

简单的解决方案是计算单词前的逗号。

这样的事情会做:

String s = ",yes,,,,"
for ( int i = 0 , len = s.length() ; i < len ; i++ )
    if ( s.charAt(i) != ',' )
        return i+1;
throw new Exception ("No option found");
于 2012-10-17T10:39:22.890 回答
0

好吧,我假设您想像这样拆分字符串,

String[] options = ",yes,,,,,,,,,,,,,".split(",");
String option2 = options[1]; //yields "yes"

但是,你为什么不使用一些更容易理解的标记,比如option2=yes等等?

查看Apache Commons CLI以获取一些库以支持更好的选项。

于 2012-10-17T10:39:39.797 回答