读取具有多个选项的字符串

时间:2012-10-17 10:31:51

标签: java string

我有",yes,,,,,,,,,,,,,"之类的字符串,表示从15个选项中选择了option2。这里,逗号,代表一个选项;如果选中它,则会有一些数据代替选项。我需要读取此字符串并获取确切的选项选择值。在上面它应该是option2。我该怎么做?

我在数据库中有15个选项,在这里可以替换选定的数据,并且,没有被选中。

或者,看另一种方式,有15个字段用逗号分隔。一个字段 - 在该示例中,第二个字段 - 具有非空值;其他人都是空的。如何确定第一个非空的字段?

4 个答案:

答案 0 :(得分:1)

尝试String.split(“,”) - 这将返回String []

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

public class Split {

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

}

答案 1 :(得分: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'

答案 2 :(得分:0)

如果我理解正确,你会得到一串逗号,在两个逗号之间有一些像&#34;是&#34;。你的任务是检索那个单词的索引,即单词前面的逗号(加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");

答案 3 :(得分:0)

好吧,我假设您要将,上的字符串拆分为:

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

但是,为什么不使用更易理解的标记,例如option2=yes等?

请查看某些库的Apache Commons CLI以支持更好的选项。