我有类似的字符串",yes,,,,,,,,,,,,,"
,它说 option2 是从 15 个选项中选择的。这里,逗号,
代表一个选项;如果它被选中,那么一些数据将代替选项。我需要阅读这个字符串并获得确切的选项选择值。在上面它应该是选项2。我该怎么做?
我在数据库中有 15 个选项,从这些选项中选择的数据在这里被替换,并且,
没有选择。
或者,换个角度看,有 15 个字段用逗号分隔。一个字段(在示例中为第二个字段)具有非空值;其他都是空的。如何确定第一个不为空的字段?
试试 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]);
}
}
}
如果您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'
如果我理解正确,你会得到一串逗号,并且在两个逗号之间有一些像“是”这样的词。您的任务是检索该词的索引,即该词前的逗号数(加 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");
好吧,我假设您想像这样拆分字符串,
:
String[] options = ",yes,,,,,,,,,,,,,".split(",");
String option2 = options[1]; //yields "yes"
但是,你为什么不使用一些更容易理解的标记,比如option2=yes
等等?
查看Apache Commons CLI以获取一些库以支持更好的选项。