You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
4.0 KiB
129 lines
4.0 KiB
package org.purplei2p.lightning.utils; |
|
|
|
import android.support.annotation.NonNull; |
|
|
|
/** |
|
* A collection of utils methods for |
|
* {@link StringBuilder} that provides |
|
* API equality with the {@link String} |
|
* API. |
|
*/ |
|
public class StringBuilderUtils { |
|
|
|
private static final String SPACE = " "; |
|
private static final String EMPTY = ""; |
|
|
|
/** |
|
* Replace the first string found in a |
|
* string builder with another string. |
|
* |
|
* @param stringBuilder the string builder. |
|
* @param toReplace the string to replace. |
|
* @param replacement the replacement string. |
|
*/ |
|
public static void replace(@NonNull StringBuilder stringBuilder, |
|
@NonNull String toReplace, |
|
@NonNull String replacement) { |
|
int index = stringBuilder.indexOf(toReplace); |
|
if (index >= 0) { |
|
stringBuilder.replace(index, index + toReplace.length(), replacement); |
|
} |
|
} |
|
|
|
/** |
|
* Trims a string builder of |
|
* any spaces at the beginning |
|
* and end. |
|
* |
|
* @param stringBuilder the string builder. |
|
*/ |
|
public static void trim(@NonNull StringBuilder stringBuilder) { |
|
while (stringBuilder.indexOf(SPACE) == 0) { |
|
stringBuilder.replace(0, 1, EMPTY); |
|
} |
|
|
|
while (stringBuilder.lastIndexOf(SPACE) == (stringBuilder.length() - 1) && stringBuilder.length() > 0) { |
|
stringBuilder.replace(stringBuilder.length() - 1, stringBuilder.length(), EMPTY); |
|
} |
|
} |
|
|
|
/** |
|
* Determines if the string builder is empty. |
|
* |
|
* @param stringBuilder the string builder. |
|
* @return true if the string builder is empty, |
|
* false otherwise. |
|
*/ |
|
public static boolean isEmpty(@NonNull StringBuilder stringBuilder) { |
|
return stringBuilder.length() == 0; |
|
} |
|
|
|
/** |
|
* Determines if a string builder starts with |
|
* a specific string. |
|
* |
|
* @param stringBuilder the string builder. |
|
* @param start the starting string. |
|
* @return true if the string builder starts |
|
* with the string, false otherwise. |
|
*/ |
|
public static boolean startsWith(@NonNull StringBuilder stringBuilder, @NonNull String start) { |
|
return stringBuilder.indexOf(start) == 0; |
|
} |
|
|
|
/** |
|
* Determines if a string builder contains a string. |
|
* |
|
* @param stringBuilder the string builder. |
|
* @param contains the string that it might contain. |
|
* @return true if the string builder contains the |
|
* string, false otherwise. |
|
*/ |
|
public static boolean contains(@NonNull StringBuilder stringBuilder, @NonNull String contains) { |
|
return stringBuilder.indexOf(contains) >= 0; |
|
} |
|
|
|
/** |
|
* Determines equality between a string |
|
* builder and a string. |
|
* |
|
* @param stringBuilder the string builder. |
|
* @param equal the string. |
|
* @return true if the string represented by |
|
* the string builder is equal to the string. |
|
*/ |
|
public static boolean equals(@NonNull StringBuilder stringBuilder, @NonNull String equal) { |
|
|
|
int builderLength = stringBuilder.length(); |
|
if (builderLength != equal.length()) { |
|
return false; |
|
} |
|
|
|
for (int n = 0; n < builderLength; n++) { |
|
if (stringBuilder.charAt(n) != equal.charAt(n)) { |
|
return false; |
|
} |
|
} |
|
|
|
return true; |
|
} |
|
|
|
/** |
|
* Creates a sub-string builder from the |
|
* current string builder. |
|
* |
|
* @param stringBuilder the string builder. |
|
* @param start the starting index. |
|
* @param end the ending index. |
|
* @return a string builder that contains the |
|
* characters between the indices. |
|
*/ |
|
@NonNull |
|
public static StringBuilder substring(@NonNull StringBuilder stringBuilder, int start, int end) { |
|
StringBuilder newStringBuilder = new StringBuilder(stringBuilder); |
|
newStringBuilder.replace(end, stringBuilder.length(), EMPTY); |
|
newStringBuilder.replace(0, start, EMPTY); |
|
|
|
return newStringBuilder; |
|
} |
|
}
|
|
|