public class StringTest {
public static void main(String[] args) {
String str = " ab cd ";
// System.out.println("[" + str + "]");
// str = myTrim(str);
// System.out.println("[" + str + "]");
str = reverseString(str);
// System.out.println("[" + str + "]");
str = "abccdekccokgcchcc";
// System.out.println(getSubCount_2(str,"cc"));
String s1 = "fkdsjflkdjflaaaaaaaa";
String s2 = "asflkdjbb";
System.out.println(getMaxSubString(s2, s1));
}
/*
* 找出两个字符串中最大的相同字串
*/
public static String getMaxSubString(String s1, String s2) {
String max = "";
String min = "";
max = (s1.length() > s2.length()) ? s1 : s2;
min = (max == s1) ? s2 : s1;
// min = (s1.length()>s2.length())?s2:s1;
// min = (s1.length()<max.length())?s1:s2;
// System.out.println("max=" + max + "..."+"min=" + min );
for (int x = 0; x < min.length(); x++) {
for (int y = 0, z = min.length() - x; z != min.length() + 1; y++, z++) {
String temp = min.substring(y, z);
if (max.contains(temp)) { // if(max.indexOf(temp)!=-1)
return temp;
}
}
}
return "没找到";
}
/*
* 统计字串出现的次数
*/
public static int getSubCount(String str, String sub) {
int count = 0;
int index;
while ((index = str.indexOf(sub)) != -1) {
str = str.substring(index + sub.length());
count++;
}
return count;
}
public static int getSubCount_2(String str, String sub) {
int count = 0;
int index = 0;
while ((index = str.indexOf(sub, index)) != -1) {
index += sub.length();
count++;
}
return count;
}
/*
* 模拟字符串对象的反转方法
*/
public static String reverseString(String str) {
/*
* char[] chs = str.toCharArray();
*
* reverse(chs);
*
* return new String(chs);
*/
return reverseString(str, 0, str.length());
}
/*
* 模拟字符串对象的反转的重载方法,从开始去到结束处反转,包含头部包含尾
*/
public static String reverseString(String str, int start, int end) {
char[] chs = str.toCharArray();
reverse(chs, start, end - 1);
return new String(chs);
}
/*
* private static void reverse(char[] chs) {
*
* int start = 0, end = chs.length-1; while(start <= end) { swap(chs, start,
* end); start++; end--; }
*
* }
*/
private static void reverse(char[] chs, int start, int end) {
while (start <= end) {
swap(chs, start, end);
start++;
end--;
}
}
private static void swap(char[] chs, int start, int end) {
char temp = chs[start];
chs[start] = chs[end];
chs[end] = temp;
}
/*
* 模拟字符串对象的trim方法
*/
public static String myTrim(String str) {
int start = 0;
int end = str.length() - 1;
/*
* 这里要用两个while分开判断,原因很简单,有可能前面有空格, 后面没空格,所以不能用一个while循环
*/
while (start <= end && str.charAt(start) == ' ')
start++;
while (start <= end && str.charAt(end) == ' ')
end--;
return str.substring(start, end + 1);
}
}
java 模拟字符串类基本方法
最新推荐文章于 2021-03-11 13:54:36 发布