2 * Svjatoslav Commons - shared library of common functionality.
3 * Copyright ©2012-2017, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of version 3 of the GNU Lesser General Public License
7 * or later as published by the Free Software Foundation.
10 package eu.svjatoslav.commons.string;
12 import java.util.Vector;
14 public class String2 {
16 private final Vector<Character> chars = new Vector<>();
18 public String2(final String value) {
19 for (final Character c : value.toCharArray())
23 public String2 addPrefix(final String prefix) {
25 for (final char c : prefix.toCharArray())
26 chars.insertElementAt(c, j++);
31 public String2 addSuffix(final String suffix) {
32 for (final char c : suffix.toCharArray())
39 * Cut given amount of characters from the left of the string.
41 * @param cutAmount of characters to cut
42 * @return part that was cut.
44 public String trimLeft(final int cutAmount) {
46 int actualCutAmount = cutAmount;
48 if (actualCutAmount > getLength())
49 actualCutAmount = getLength();
51 final String result = getSubString(0, actualCutAmount);
53 chars.subList(0, actualCutAmount).clear();
58 public String2 enforceLength(final int targetLength) {
59 if (getLength() > targetLength)
60 chars.subList(targetLength, getLength()).clear();
61 else if (getLength() < targetLength) {
62 final int charactersToAdd = targetLength - getLength();
63 for (int i = 0; i < charactersToAdd; i++)
70 public int getLength() {
74 public String getSubString(final int startInclusive, final int endExclusive) {
75 final char[] charArray = new char[endExclusive - startInclusive];
78 for (int i = startInclusive; i < endExclusive; i++) {
79 charArray[j] = chars.get(i);
82 return new String(charArray);
85 public boolean isEmpty() {
86 return chars.size() == 0;
90 public String toString() {
91 return getSubString(0, chars.size());