作为输入,我从用户那里得到一个字符串数组。我需要拆分这些行,使它们形成一个表,每行有相同数量的单元格。单元格应包含数字。我想确定单元格分隔符的最佳猜测,并将其作为默认值呈现给用户,如果猜测结果不好,则可以更改。
我认为它是以下之一:标签,分号,空格或逗号。逗号很关键,因为它也被用作德语和其他文化中的小数点。输入可以包含诸如“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;
}
是否有更好的启发式方法可以获得细胞分离器的最佳匹配?
表现并不重要!
答案 0 :(得分:5)
我提出了更复杂的算法:
答案 1 :(得分:2)
遍历每一行并搜索以查看可以使用每个分隔符拆分行的项目数。
将最常分割的行用于每行的相同数量的项目。
但老实说,这项检查既聪明又有趣,可能是不必要的。用户知道他们的数据。我会选择一个默认值,让他们根据需要选择不同的默认值。你甚至可以坚持他们的选择,所以他们不需要一遍又一遍地选择相同的默认值。
答案 2 :(得分:0)
我认为您应该使用java中的reg Ex(正则表达式)来帮助您实现目标。