package be.isach.ultracosmetics.util;
import java.util.Arrays;
import java.util.List;
public class StringUtil {
/**
* Converts all color and format codes
* @param string
* @return
*/
public static String convertCodes(String string){
if(string == null)return string;
int current = 0;
char[] cs = string.toCharArray();
StringBuilder sb = new StringBuilder();
for(char c : cs){
if(current <= cs.length && c == '&'){
char tc = Character.toLowerCase(cs[current+1]);
if(tc == '1' || tc == '2' || tc == '3' || tc == '4' || tc == '5' || tc == '6' || tc == '7' ||
tc == '8' || tc == '9' || tc == '0' || tc == 'a' || tc == 'b' || tc == 'c' || tc == 'd' ||
tc == 'e' || tc == 'f' || tc == 'k' || tc == 'l' || tc == 'm' || tc == 'n' || tc == 'o'){
sb.append("ยง");
}else{
sb.append(c);
}
}else{
sb.append(c);
}
current ++;
}
return sb.toString();
}
/**
* Checks whether the given string is a confirming word
* @param string
* @return
*/
public static boolean isConfirming(String string){
return match(string, new String[]{
"on",
"true",
"yes",
"allow",
"positive",
"enable",
"enabled",
"confirm",
"confirmed"
});
}
/**
* Checks whether the given string is a rejecting word
* @param string
* @return
*/
public static boolean isRejecting(String string){
return match(string, new String[]{
"off",
"false",
"no",
"deny",
"negative",
"disable",
"disabled",
"reject",
"rejected"
});
}
/**
* Counts the amount of times a certain
* character is part of a string
* @param string
* @return
*/
public static int countMatches(String string, char c){
int n = 0;
for(char tc : string.toCharArray()){
if(c == tc)n++;
}
return n;
}
/**
* Checks if any of the strings from the given
* array matches the given string
* @param s
* @param sa
* @return
*/
public static boolean match(String s, String...sa){
for(String st : sa){
if(st.equalsIgnoreCase(s))return true;
}
return false;
}
public static boolean match(String s, List<String> list){
String[] sa = new String[list.size()];
for(int n = 0; n < sa.length; n ++){
sa[n]=list.get(n);
}
return match(s, sa);
}
/**
* Splits the string every time the given
* character has been found
* @param string
* @return
*/
public static String[] split(String string, char c){
if(countMatches(string, c) <= 0)return new String[]{string};
String s = string + c;
String[] sa = new String[countMatches(string, c)+1];
StringBuilder sb = new StringBuilder();
char[] ca = s.toCharArray();
int n = 0, x;
for(x = 0; x < ca.length; x ++){
if(ca[x] == c){
sa[n] = sb.toString();
sb = new StringBuilder();
n++;
}else{
sb.append(ca[x]);
}
}
return sa;
}
/**
* Changes a group of words into
* a formatted list
* @param strings
* @param startAt
* @param betweenWords
* @return
*/
public static String toFormattedList(String[] strings, int startAt, String betweenWords){
return toFormattedList(Arrays.asList(strings), startAt, betweenWords);
}
public static String toFormattedList(List<String> strings, int startAt, String betweenWords){
if(strings==null||startAt >= strings.size())return "";
StringBuilder sb = new StringBuilder();
for(int n = startAt; n < strings.size(); n ++){
if(sb.length() > 0)sb.append(betweenWords);
sb.append(strings.get(n));
}
return sb.toString();
}
/**
* Changes the string if bigger then
* the given limit
* @param string
* @param startAt
* @param limit
* @return
*/
public static String limit(String string, int startAt, int limit){
try{
return string.substring(startAt, startAt+limit);
}catch(Exception e){
return string;
}
}
}