X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fstring%2FString2.java;h=4c1627f6aee3bd63cfe37f52639f3dc38bfcfb85;hb=96b417fd35bb6aae9e5e57af94cecb44aeeb9c22;hp=37ee8e9b2b4b58ab1e2176dcf25d274d35576f30;hpb=9bf004ce4e9b5edff36c65fcc8cc0f303390d7fc;p=svjatoslav_commons.git diff --git a/src/main/java/eu/svjatoslav/commons/string/String2.java b/src/main/java/eu/svjatoslav/commons/string/String2.java index 37ee8e9..4c1627f 100755 --- a/src/main/java/eu/svjatoslav/commons/string/String2.java +++ b/src/main/java/eu/svjatoslav/commons/string/String2.java @@ -1,6 +1,6 @@ /* * Svjatoslav Commons - shared library of common functionality. - * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu + * Copyright ©2012-2017, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu * * This program is free software; you can redistribute it and/or * modify it under the terms of version 3 of the GNU Lesser General Public License @@ -9,26 +9,37 @@ package eu.svjatoslav.commons.string; -import java.util.Vector; +import java.util.ArrayList; +import java.util.List; public class String2 { - private final Vector chars = new Vector<>(); + private final List chars; - public String2(final String value) { + public String2(String value) { + if (value == null) + value = ""; + + chars = new ArrayList<>(value.length()); for (final Character c : value.toCharArray()) chars.add(c); } public String2 addPrefix(final String prefix) { - int j = 0; + if (prefix == null) + return this; + + int i = 0; for (final char c : prefix.toCharArray()) - chars.insertElementAt(c, j++); + chars.add(i++, c); return this; } public String2 addSuffix(final String suffix) { + if (suffix == null) + return this; + for (final char c : suffix.toCharArray()) chars.add(c); @@ -41,18 +52,65 @@ public class String2 { * @param cutAmount of characters to cut * @return part that was cut. */ - public String trimLeft(final int cutAmount) { + public String2 trimPrefix(final int cutAmount) { int actualCutAmount = cutAmount; if (actualCutAmount > getLength()) actualCutAmount = getLength(); - final String result = getSubString(0, actualCutAmount); - chars.subList(0, actualCutAmount).clear(); - return result; + 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 chars.size()) + return false; + + for (int i = 0; i < fragment.length(); i++) + if (chars.get(index + i) != fragment.charAt(i)) + return false; + + return true; } public String2 enforceLength(final int targetLength) {