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));
/// List<CsvRecord> records = CsvReader.builder()
/// .build(handler, " foo , bar")
/// .stream()
/// .toList();
///
/// // fields would be: "FOO" and "BAR"
/// ```
public enum FieldModifiers implements FieldModifier {
/// Modifier that does not modify anything.
NOP,
/// Modifier that modifies the field value with [String#trim()].
/// 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 value with [String#strip()].
/// Comments are not modified.
STRIP {
@Override
public String modify(final long startingLineNumber, final int fieldIdx,
final boolean quoted, final String field) {
return field.strip();
}
}
}