Как проверить, подходит ли строка в формате:Строка содержит три запятых номера?
<number>,<number>,<number>
например
3.0, 87546,0.8273456
т. Е. Три значения, разделенные запятой, которые могут обрабатываться как удвоенные. Иногда строка будет содержать что-то еще (например, Text,More text,42
или anything, really
), и в этом случае мне просто нужно проигнорировать ее и перейти к разбору следующей строки.
Прямо сейчас я просто пытаюсь разобрать строку так, как если бы она соответствовала ожидаемому формату, и поймать любое полученное исключение. Что является более умным и менее дорогостоящим способом? Надеюсь, не выбрасывать/ловить исключения?
String[] parsedLine = line.trim().split(",");
if (parsedLine.length == 3) {
try {
xCoordinate = Double.parseDouble(parsedLine[0]);
yCoordinate = Double.parseDouble(parsedLine[1]);
groundElevation = Double.parseDouble(parsedLine[2]);
} catch (NumberFormatException nfe) {
//This line does not contain numbers exclusively.
//Assume it's a header/comment.
//Do nothing.
}
} else {
//This is not in the expected x,y,z format.
//Assume it's a header/comment.
//Do nothing.
}
Помните, что вам необходимо правильно обработать следующее: '1," текст, 1.5 ", 2'. – Vlad
im не java-программист, но как насчет использования 'try {int [] parsedLine = line.trim(). Split (", ");} catch {// Not numbers}' – Dementic
@Dementic: действительно, вы а не Java-программистом. int и String - два разных типа в Java, и вы не можете просто притворяться, что String [] - это int []. И блок catch нуждается в исключении. –