java 模拟字符串类基本方法

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);
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验目的: 练习使用Java基本数据型。使用JavaString操作字符串和子串。 实验内容: 1.写一个程序提示用户键入某一货币数量(以分为单位),该程序应计算出如何用最少量的1元,50分,10分和1分硬币得到该数目。如195分最少可以用一个1元硬币,1个50分硬币,4个10分硬币和5个1分硬币组成。 注意不要用数组存放不同硬币的值。 2.写一个程序可以对两个字符串进行测试,得知第一个字符串是否包含在第二个字符串中。如字符串”PEN”包含在字符串“INDEPENDENT”中。 可以利用字符串方法 boolean regionMatches(int toffset, String other, int ooffset, int len) toffset 指从被调用方法字符串的第几个字符开始测试,如果是0,表明从字符串的首字符开始。other是指使用的另一个字符串。ooffset指从另一个字符串的第几个字符开始。len指要比较几个字符。该方法返回boolean值。 在本题中,ooffset为0,因为我们要测试整个短字符串;len是短字符串的长度;所以应该用 big.regionMatches(index, small, 0, small.length()) 如果big指“independent",small指"pen",则index=2时为假,index=4时为真 (b)改进程序,当第一个字符串包含在第二个字符串中时,显示第一个字符串在第二个字符串中的起始位置。 (c)改进程序,即使当用户输入顺序错误时(第一个是长字符串,第二个是短字符串),能自动在长字符串中搜寻短字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值