`
旋风小胖神
  • 浏览: 7864 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

多个字符串居中对齐,算法!

阅读更多
    前一段时间有个朋友问我怎么把字符串居中对齐,于是我写了一个例子给他!现在和大家分享一下,有什么不对的,请指教!

//取得字符串数组中最长的字符串的长度
	public static int  findWord(String[] word){
		List<Integer> list=new ArrayList<Integer>();
		for(int i=0;i<word.length;i++){
			int wordLength=word[i].length();
			list.add(wordLength);
		}
		Collections.sort(list);
		int max=list.get((list.size()-1));
		return max;
	}

//取得字符传音长度的一半
	public static List findSubString(String[] word){
		List list=new ArrayList();
		for(int i=0;i<word.length;i++){
			String str=word[i];
			//取得字符串数组中字符串长度的一半
			int wordLength=word[i].length()/2;
			//并把长度和字符串放到一个数组中
			Object[] o={wordLength,str};
			//把这个数组放到List集合中
			list.add(o);
		}
		return list;
	}

//取得居中对齐后的字符串集合
     public static List findString(String[] word){
		List list=new ArrayList();
		//最大长度的一半
		int maxban=findWord(word)/2;
		List list1=findSubString(word);
		for(int i=0;i<list1.size();i++){
			//从List中取得数组
			Object[] ost=(Object[])list1.get(i);
			int x= (Integer)ost[0] ;
			String str1=(String)ost[1];
			//求每个字符串长度的一半 和最大长度的一半的差值
			int t=maxban-x;
			String xx="";
			//长度相同
			if(t==0){
				list.add(str1);
			}else{
				//计算前面有多少个空格
				for(int j=0;j<t;j++){
					xx=xx+" ";
				}
				//前面加多少个空格
				xx=xx+str1;
				list.add(xx);
			}
		}
		return list;
	}

//测试
	public static void main(String[] args) {
		String[] word={"Konwledge","is","Powerd"};
		List list=findString(word);
		for(int i=0;i<list.size();i++){
			System.out.println(list.get(i));
		}
	}

  • 大小: 2.4 KB
分享到:
评论
5 楼 li463968565 2011-03-04  
抓挖鸟 写道
sdh5724 写道
看到getBytes(),  我笑了。

如果要显示的话, 不是这么做的。 如果是等宽字符, 也不是这么算的。  你这个最多算个当前os字符集下的字节对齐。
不知道你的业务要求是什么。

他玩他的,你笑你的。和谐社会。

+1
4 楼 抓挖鸟 2011-03-04  
sdh5724 写道
看到getBytes(),  我笑了。

如果要显示的话, 不是这么做的。 如果是等宽字符, 也不是这么算的。  你这个最多算个当前os字符集下的字节对齐。
不知道你的业务要求是什么。

他玩他的,你笑你的。和谐社会。
3 楼 sdh5724 2011-03-04  
看到getBytes(),  我笑了。

如果要显示的话, 不是这么做的。 如果是等宽字符, 也不是这么算的。  你这个最多算个当前os字符集下的字节对齐。
不知道你的业务要求是什么。
2 楼 mahu456 2011-03-03  
里面没有必要搞那么多List。简单点好。
我改了一下,你看是否好一点。
	public static int findWord(String[] word) {
		int max = 0;
		if (null == word) {
			return max;
		}
		int temp = 0;
		for (int i = 0; i < word.length; i++) {
			if (null != word[i]) {
				temp = word[i].getBytes().length;
				if (max < temp) {
					max = temp;
				}
			}
		}
		return max;
	}

	// 取得居中对齐后的字符串集合
	public static List findString(String[] word) {
		List list = new ArrayList();
		// 最大长度
		int maxban = findWord(word);
		// 如果是奇数,就加1
		if (maxban % 2 != 0) {
			maxban++;
		}
		String str1 = null;
		for (int i = 0; i < word.length; i++) {
			int t = maxban;
			// 取得字符串
			str1 = word[i];
			if (null == str1 || str1.length() == 0) { //如果字符串为空,直接不用添加空格
				str1 = "";
				t = 0;
			} else {
				// 求每个字符串长度和最大长度的差值的一半
				t = (maxban - str1.getBytes().length) / 2; //这里是取整
			}
			String xx = "";
			// 长度相同
			if (t > 0) {
				// 计算前面有多少个空格
				for (int j = 0; j < t; j++) {
					xx = xx + " ";
				}
				// 前面加多少个空格
				str1 = xx + str1;
			}
			list.add(str1);
		}
		return list;
	}

1 楼 cjshbao 2011-03-02  
没居中,2边不对称

相关推荐

    常用功能汇编语言代码汇总,例如:ASCII转换,浮点操作,网络,字符串,排序等

    64 位整数转换为十进制 ASCIIZ 字符串,阻止多个实例,重新排序任务栏项,在屏幕上居中窗口,终止 TCP 连接,IPADDR 和 PORTNR 宏,搜索InString,IsExtensionInList,wsprintf_sci,多字符串替换,十六进制 ASCIIZ ...

    python字符串对其居中显示的方法

    下面的代码可以让字符串居中,左对齐和右对齐,字符串长度设置为50,居中后左右补充空格,右对齐会在左侧补充空格 string1 = "Now I am here." print string1.center( 50 ) print string1.rjust( 50 ) print string...

    delphi 开发经验技巧宝典源码

    0094 使用RightStr函数从右边取得指定个数的字符串 65 0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串第一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098...

    delphi 开发经验技巧宝典源码06

    0094 使用RightStr函数从右边取得指定个数的字符串 65 0095 使用Length函数取得一段字符串的长度 65 0096 使用Pos函数返回子字符串第一次出现的索引值 66 0097 使用Quotedstr函数返回字符串的引证串 66 0098...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    全书分6篇共25章,主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗体基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows...

    超实用的jQuery代码段

    11.19 如何构建最优化的字符串 11.20 使用jQuery产生GUID值 11.21 使用jQuery实现聚合函数 11.22 用jQuery打印网页的特定区域 11.23 禁止表单被提交 11.24 使用delay()延迟执行动画 11.25 在网页上运行本地程序的...

    SuperNotepad

    rtrim("") 丢掉字符串右边空格 trim("") 丢掉字符串首尾空格 len("") 长度 strreverse("") 字符串反转 replace("","","") 字串内替换 instr("","") 字串内出现指定字符的首位置 instrrev("","") 字串内出现...

    EXCEL百宝箱8.0终极版

    对引用数据将出现次数多的字符串排列在第一位,然后依次降序排列所有数据。有两个参数,第一参数为数据区域引用,第二参数为名次,可使用ROW(a1)。 函数名称:替换 函数功能与参数:替换第N次出现的字符串的函数。...

    禅道项目管理软件 6.2.stable 版

    1124 重新实现dao里面的检查字符串长度的计算方式 1359 项目导入bug的时候,自动计算模块 1199 linux一键安装包的控制脚本初始化对xampp变量的设置 1434 调整产品各个操作的界面。 1347 一键安装包首页居中对齐。 ...

    Excel百宝箱8.0

    对引用数据将出现次数多的字符串排列在第一位,然后依次降序排列所有数据。有两个参数,第一参数为数据区域引用,第二参数为名次,可使用ROW(a1)。 函数名称:替换 函数功能与参数:替换第N次出现的字符串的函数。...

    grub4dos-V0.4.6a-2017-02-04更新

    --string=[x]=[y]=[color]=["string“] 字符串位置、颜色与内容,可用于标题,说明,帮助等。单位:列,行,24位色彩。 注:如果省略颜色,位于菜单框以上按标题颜色,位于菜单框以下按帮助文本颜色; 字符串头尾...

Global site tag (gtag.js) - Google Analytics