summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/datasource/parser/AbstractParser.java
diff options
context:
space:
mode:
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.java24
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;