作为输入,我从用户那里得到了一个字符串数组。我需要拆分这些行,以便它们形成一个表,每行具有相等数量的单元格。单元格应包含数字。我想确定单元格分隔符的最佳猜测,并将其作为默认值呈现给用户,如果猜测不好,他可以更改默认值。
我假设它是以下之一:制表符,分号,空格或逗号。逗号至关重要,因为在德国和其他文化中,逗号也用作小数点。输入中可能包含诸如“ 1.0,2.0,3.0”或“ 1,0; 2,0; 3,0”之类的行
到目前为止,我的原始解决方案是:
private char getSeparator(String[] rows) {
String firstRow = rows[0];
char[] possibleSeparators = new char[] {'\t',';',' ',','};
char separator = possibleSeparators[1];
for (int i=0;i<possibleSeparators.length;i++) {
if (firstRow.indexOf(separator) >= 0) {
separator = possibleSeparators[i];
break;
}
}
return separator;
}
是否有更好的启发方法来获得与细胞分离器最匹配的方法?
性能没关系!
最佳答案
遍历每行并搜索以查看使用每个分隔符可以将该行拆分成多少个项目。
使用行被最频繁地拆分为每行相同数量的项目的项目。
但老实说,这种检查虽然聪明又有趣,但可能没有必要。用户知道他们的数据。我会选择一个默认值,并在需要时让他们选择其他默认值。您甚至可以坚持他们的选择,因此他们不必一遍又一遍地选择相同的默认值。