package ecologylab.bigsemantics.metametadata.fieldops; import ecologylab.serialization.annotations.simpl_scalar; /** * * @author quyin */ public class Strip implements FieldOp { @simpl_scalar private String anyOf; public String getAnyOf() { return anyOf; } public void setAnyOf(String anyOf) { this.anyOf = anyOf; } private boolean containsAny(String s, char c) { return s.indexOf(c) >= 0; } @Override public Object operateOn(Object rawValue) { if (rawValue != null) { String s = rawValue.toString(); if (anyOf == null) { return s.trim(); } else { int a = 0, b = s.length() - 1; while (a <= b && containsAny(anyOf, s.charAt(a))) { a++; } while (b >= a && containsAny(anyOf, s.charAt(b))) { b--; } return (a <= b) ? s.substring(a, b + 1) : ""; } } return rawValue; } }