Java算法解析3—————对字符串相关算法

一:根据某种规则缩短字符串

/*
 * 根据规则缩短字符串
 */
public class Dome07 {
	public static void main(String[] args) {
		String str = "C:\\Windows\\Resources\\Themes\\aero";
		while (true) {
			System.out.println(str);
			int endIndex = str.lastIndexOf("\\");
			// 截取字符串
			str = str.substring(0, endIndex);
			//substring(start,end)方法的范围:[start,end)	
			if (str.indexOf("\\") == -1) {
				System.out.println(str);
				return; // 退出程序
			}
		}
	}
}


 

二:统计字符串中不同类型字符的个数

/*
 * 统计字符串不同字符类型的个数
 */
public class Dome08 {
	public static void main(String[] args) {
		String str = "天气,tianqi/,//t232aA{{";
		System.out.printf("字符串长度:%d\n", str.length());
		// 英语,中文,数字,其他
		StringBuilder[] sb = new StringBuilder[4];
		for (int i = 0; i < sb.length; i++) {
			// StringBuilder初始化
			sb[i] = new StringBuilder();
		}
		for (int i = 0; i < str.length(); i++) {
			// 包含所有英文字母
			if (str.charAt(i) >= 'A' && str.charAt(i) <= 'z') {
				sb[0].append(str.charAt(i));
				// 判断所有中文
			} else if (str.charAt(i) >= 19968 && str.charAt(i) <= 171941) {
				sb[1].append(str.charAt(i));
				// 数字
			} else if (str.charAt(i) >= '1' && str.charAt(i) <= '9') {
				sb[2].append(str.charAt(i));
			} else {
				sb[3].append(str.charAt(i));
			}
		}
		for (int i = 0; i < sb.length; i++) {
			System.out.printf("%d\t%s\n", sb[i].length(), sb[i].toString());
		}
	}
}


 

三:实现一个函数,把字符串中的每个空格替换成“%20”

例如输入“I am Tom”,则输出“I%20am%20Tom”

public class Dome06 {

	public void replaceBlank(char string[], int length) {
		if (string == null || length <= 0)
			return;

		int originalLength = 0;
		int numberOfBlank = 0;
		int i = 0;

		System.out.println(string);

		while (string[i] != '\0') {
			++originalLength;

			if (string[i] == ' ')
				++numberOfBlank;

			++i;
		}

		int newLength = originalLength + numberOfBlank * 2;
		if (newLength > length)
			return;

		int indexOfOriginal = originalLength;
		int indexOfNew = newLength;

		while (indexOfOriginal >= 0 && indexOfNew > indexOfOriginal) {
			if (string[indexOfOriginal] == ' ') {
				string[indexOfNew--] = '0';
				string[indexOfNew--] = '2';
				string[indexOfNew--] = '%';
			} else {
				string[indexOfNew--] = string[indexOfOriginal];
			}
			--indexOfOriginal;
		}

		System.out.println(string);
	}

	public static void main(String[] args) {
		char[] originalStr = new char[30];
		originalStr[0] = 'I';
		originalStr[1] = ' ';
		originalStr[2] = 'a';
		originalStr[3] = 'm';
		originalStr[4] = ' ';
		originalStr[5] = 'T';
		originalStr[6] = 'o';
		originalStr[7] = 'm';
		originalStr[8] = '.';
		new Dome06().replaceBlank(originalStr, 30);
	}

}


 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。