FieldModifiers.java
package de.siegmar.fastcsv.reader;
/// Provides some common [FieldModifier] implementations.
///
/// Example usage:
/// ```
/// FieldModifier modifier = FieldModifiers.TRIM
/// .andThen(FieldModifier.modify(field -> field.toUpperCase(Locale.ENGLISH)));
/// CsvRecordHandler handler = CsvRecordHandler.of(c -> c.fieldModifier(modifier));
/// CsvRecord csvRecord = CsvReader.builder().ofSingleCsvRecord(handler, " foo , bar");
/// // field contents: "FOO" and "BAR"
/// ```
public enum FieldModifiers implements FieldModifier {
/// Modifier that does not modify anything.
NOP,
/// Modifier that trims the field content with [String#trim()]: it removes leading and trailing whitespace
/// (any character from `U+0000` to `U+0020`), also in quoted fields.
/// Comments are not modified.
TRIM {
@Override
public String modify(final long startingLineNumber, final int fieldIdx,
final boolean quoted, final String field) {
return field.trim();
}
},
/// Modifier that modifies the field content with [String#strip()]: it removes leading and trailing white space
/// as defined by [Character#isWhitespace(int)], also in quoted fields. This is a different set of characters
/// than `U+0000` to `U+0020`.
/// Comments are not modified.
STRIP {
@Override
public String modify(final long startingLineNumber, final int fieldIdx,
final boolean quoted, final String field) {
return field.strip();
}
}
}