diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/datasource/parser/AbstractParser.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/datasource/parser/AbstractParser.java | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/datasource/parser/AbstractParser.java b/src/de/lmu/ifi/dbs/elki/datasource/parser/AbstractParser.java index e3bd77a0..dcfb8245 100644 --- a/src/de/lmu/ifi/dbs/elki/datasource/parser/AbstractParser.java +++ b/src/de/lmu/ifi/dbs/elki/datasource/parser/AbstractParser.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.datasource.parser; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2011 + Copyright (C) 2012 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team @@ -54,7 +54,7 @@ public abstract class AbstractParser { public static final String QUOTE_CHAR = "\""; /** - * A pattern catching most numbers that can be parsed using Double.valueOf: + * A pattern catching most numbers that can be parsed using Double.parseDouble: * * Some examples: <code>1</code> <code>1.</code> <code>1.2</code> * <code>.2</code> <code>-.2e-03</code> @@ -124,7 +124,9 @@ public abstract class AbstractParser { // Closing quote found? if(m.start() > index + 1 && input.charAt(m.start() - 1) == quoteChar) { // Strip quote characters - matchList.add(input.subSequence(index + 1, m.start() - 1).toString()); + if (index + 1 < m.start() - 1) { + matchList.add(input.substring(index + 1, m.start() - 1)); + } // Seek past index = m.end(); // new quote? @@ -133,7 +135,9 @@ public abstract class AbstractParser { } else { // Add match before separator - matchList.add(input.subSequence(index, m.start()).toString()); + if (index < m.start()) { + matchList.add(input.substring(index, m.start())); + } // Seek past separator index = m.end(); // new quote? @@ -148,15 +152,21 @@ public abstract class AbstractParser { // Add tail after last separator. if(inquote) { if(input.charAt(input.length() - 1) == quoteChar) { - matchList.add(input.subSequence(index + 1, input.length() - 1).toString()); + if (index + 1 < input.length() - 1) { + matchList.add(input.substring(index + 1, input.length() - 1)); + } } else { getLogger().warning("Invalid quoted line in input."); - matchList.add(input.subSequence(index, input.length()).toString()); + if (index < input.length()) { + matchList.add(input.substring(index, input.length())); + } } } else { - matchList.add(input.subSequence(index, input.length()).toString()); + if (index < input.length()) { + matchList.add(input.substring(index, input.length())); + } } // Return return matchList; |