–原作者:尚硅谷-宋红康
自定义实现字符串常用的方法
public class StringTest {
@Test
public void testStringMethod() {
String str = " d ";
System.out.println(trim(str));
str = " ";
System.out.println(trim(str).length());
System.out.println();
str = "abcdefg";
System.out.println(reverse(str, 2, 5));
System.out.println(reverse1(str, 2, 5));
System.out.println();
str = "abcdefcdgj";
String subStr = "cd";
System.out.println(getTime(str, subStr));
String str1 = "abcdefqwfghilmncj", str2 = "abqfcdeoqmnczz";
for (String s : getMaxSubString(str1, str2)) {
System.out.println(s);
}
str = "qwawwziyabc";
System.out.println(sortString(str));
}
/**
* 对字符串中的字符进行自然排序
*
* @param str
* @return
*/
public String sortString(String str) {
char[] c = str.toCharArray();
Arrays.parallelSort(c);
return new String(c);
}
/**
* 获取两个字符串中最大的相同子串
*
* @param str1
* @param str2
* @return
*/
public Set<String> getMaxSubString(String str1, String str2) {
Set<String> strs = new HashSet<String>();
String maxStr, minStr, tempStr;
if (str1.length() > str2.length()) {
maxStr = str1;
minStr = str2;
} else {
maxStr = str2;
minStr = str1;
}
int len = minStr.length();
for (int i = 0; i < len; i++) {
for (int x = 0, y = len - i; y <= len; x++, y++) {
tempStr = minStr.substring(x, y);
if (maxStr.contains(tempStr)) {
strs.add(tempStr);
}
}
if (strs.size() > 0) {
return strs;
}
}
return null;
}
/**
* 获取一个字符串在另一个字符串中出现的次数
*
* @param str
* @param subStr
* @return
*/
public static int getTime(String str, String subStr) {
int time = 0;
int loc;
while ((loc = str.indexOf(subStr)) != -1) {
time++;
str = str.substring(loc + subStr.length());
}
return time;
}
/**
* 字符串的反转:方法二
*
* @param str
* @param start
* @param end
* @return
*/
public String reverse1(String str, int start, int end) {
String frontStr = str.substring(0, start);
for (int i = end; i >= start; i--) {
frontStr += str.charAt(i);
}
frontStr += str.substring(end + 1);
return frontStr;
}
/**
* 字符串的反转:方法一
*
* @param str
* @param start
* @param end
* @return
*/
public static String reverse(String str, int start, int end) {
// 调用字符数组反转的方法
return reverse(str.toCharArray(), start, end);
}
/**
* 字符数组的反转
*
* @param charArray
* @param start
* @param end
* @return
*/
public static String reverse(char[] charArray, int start, int end) {
char c;
for (int i = start, j = end; i < j; i++, j--) {
c = charArray[i];
charArray[i] = charArray[j];
charArray[j] = c;
}
return new String(charArray);
}
/**
* 字符串去除前后空格
*
* @param str
* @return
*/
public static String trim(String str) {
int start = 0;
int end = str.length() - 1;
while (start < end && str.charAt(start) == ' ') {
start++;
}
while (start < end && str.charAt(end) == ' ') {
end--;
}
return str.substring(start, end + 1);
}
}