+ return this;
+ }
+
+ public String2 trimPrefixIfExists(String prefix) {
+ if (prefix == null)
+ return this;
+
+ if (hasPrefix(prefix))
+ trimPrefix(prefix.length());
+
+ return this;
+ }
+
+ public String2 trimSuffixIfExists(String suffix) {
+ if (hasSuffix(suffix))
+ trimSuffix(suffix.length());
+
+ return this;
+ }
+
+ public String2 trimSuffix(int charsToTrim) {
+
+ if (charsToTrim > chars.size()) {
+ chars.clear();
+ return this;
+ }
+
+ for (int i = 0; i < charsToTrim; i++)
+ chars.remove(chars.size() - 1);
+
+ return this;
+ }
+
+ public boolean hasSuffix(String suffix) {
+ return contains(suffix, getLength() - suffix.length());
+ }
+
+ public boolean hasPrefix(String prefix) {
+ return contains(prefix, 0);
+ }
+
+ public boolean contains(String fragment, int index) {
+ if (index + fragment.length() > chars.size())
+ return false;
+
+ for (int i = 0; i < fragment.length(); i++)
+ if (chars.get(index + i) != fragment.charAt(i))
+ return false;
+
+ return true;