在java中对字符串的一些实现处理

package my.yaner;

public class StringTest {

	public static void main(String[] args) {
//		sentenceSplit();
		formatString(null, null);
	}

	
	/**
	 * 分割句子
	 * 功能:     在一个指定的控件中,能够显示的文字自适应到该控件里,
	 * 			如果当前显示不出该单词,则重新换行到下一行显示。
	 * 实现思路:
	 * 			将要显示的语句通过分割将所有单词放到一个数组中,
	 * 			然后循环取数组中的每个单词,如果当前句超过指定的
	 * 			字节数(假如一句就显示30个字节),则拼接“换行符\n”,
	 * 			开始新的一句,否则直接拼接从数组中读出的单词。
	 */
	private static void sentenceSplit(){
		String showContent = "i will go home, and i will work better than future, so now i will learn more somethings. oh ye!";		//要显示的文字
		String lastContent = "";	//拼接换行后的字符串
		int totalWidth = 60;		//每行能够显示的字节数
		int preWordWidth = 2;		//每个字节的宽度
		String[] wordArray  = null;
		wordArray = showContent.split(" ");
		int arrLen = wordArray.length - 1;
		
		String tempSentence = "";				//临时拼接的当前句子
		for(int i = 0; i <= arrLen; i++) {		
			String word = wordArray[i];
			String temp = tempSentence;		//保存拼接前的操作
			tempSentence += word;
			int lenW = tempSentence.length() * preWordWidth;
			if (lenW > totalWidth) {		//说明加上当前单词会超出边界,所以应当换行, 将该单词放到下一行中显示
				lastContent += temp;
				lastContent += "\n";
				
				tempSentence = word;
				tempSentence += " ";
			} else if (lenW == totalWidth) {
				lastContent += tempSentence;
				lastContent += "\n";
				
				tempSentence = "";
			} 
			else {
				tempSentence += " ";					//每个单词之间要保留一个空格
				if (i == arrLen)
					lastContent += tempSentence;
			}
		}
		System.out.println("lastSentence: ");
		System.out.print(lastContent);
	}
	
	
	/**
	 * 仿照字符串格式化的形式,将字符串和后面给出的参数拼接起来
	 * 如: 我的梦想是{0}, {1}是我最大的动力,  new String[]{dreamReal, 追求}
	 */
	private static void formatString(String src, String[] args){
		src = "我的梦想是{0}, {1}是我最大的动力.";
		args = new String[]{"dreamReal", "追求"};
		
		StringBuffer result = new StringBuffer();
		char[] chArr = src.toCharArray();
		int len = chArr.length;
		for(int i = 0; i < len; i++) {
//			System.out.println(i + " : " + chArr[i]);
			char ch = chArr[i];
			if(ch == '{') {
				ch = chArr[++i];
				StringBuffer sbNum = new StringBuffer();
				while(ch != '}') {
					sbNum.append(ch);
					++i;
					ch = chArr[i]; 
				}
				int num = Integer.parseInt(sbNum.toString());
				String arg = args[num];
				result.append(arg);
				continue;
//				System.out.println("提取出的参数为:" + sbNum);
			}
			result.append(ch);
		}
		System.out.println("组合后的字符串为:" + result.toString());
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值