`

编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串

阅读更多
最近网上流行一道面试题,有很多种答案。闲着没事我也做出了自己的答案。期待拍砖。
题目是:
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
public class SplitStr {

	/*
	 * 判断是否为汉字
	 * 
	 * @param cc 输入字符
	 */
	public static boolean strIfChinese(char cc) {
		String ccStr = String.valueOf(cc);
		return ccStr.getBytes().length > 1 ? true : false;

	}

	/*
	 * 计算输入字符串的总字节数
	 * 
	 * @param str
	 */
	public static int strTotalLen(String str) {
		int len = 0;
        char[] chr = str.toCharArray();
		for (char cc : chr) {
            if (!strIfChinese(cc)) {
				len = len + 1;
			} else {
				len = len + 2;
			}  
		}
		return len;
	}

	/*
	 * 
	 * @param inputStr 输入的字符串
	 * 
	 * @param len 指定长度的字节数
	 */
	public String retStr(String inputStr, int len) {
        
		// 如果输入的字符串为空或者是"",则直接输出"";
		if (inputStr == null || inputStr.equals(""))
			return "";
        // 如果len为0或大于总字节数
		if (len == 0 || len > strTotalLen(inputStr))
			return inputStr;
        
		char[] chr = inputStr.toCharArray();
		
		String str="";
		int count = 0;
		for(char cc:chr){
			if (count < len) {
				if (strIfChinese(cc)) {
					if (count + 1 == len)
						return str;
					count = count + 2;
					str = str + String.valueOf(cc);
				} else {
					count = count + 1;
					str = str + String.valueOf(cc);
				}
				
			}			 
			
		}
		
		return str;
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {

		/*
		 * String str = "a我bc"; char[] chr = str.toCharArray(); byte[] byt =
		 * str.getBytes(); for (byte bb : byt) { System.out.println(bb); }
		 * 
		 * for (char cc : chr) { System.out.println(cc); }
		 */

		// System.out.println(chr.length + "&&&" + byt.length + "%%%" + by);
		SplitStr splitStr = new SplitStr();
		String str = "我b们c";
		System.out.println(splitStr.retStr(str, 6));
		
	}
}


分享到:
评论
1 楼 hufeng 2009-09-03  
拍砖。。。。。

相关推荐

    java编写一个截取字符串的函数,输入为一个字符串和字节数.docx

    java编写一个截取字符串的函数,输入为一个字符串和字节数

    java 一个截取字符串的函数

    java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况

    JAVA按字节截取字符串(适用于Unicode)

    7. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉...

    截取中英文字符串函数

    可以截取中英文字符串,也可以含有字符,里面有好几个方法 有按字符个数截取 有按字节数来截取不会存在乱码

    截取字符串的五大方法

    是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。...是一个整数,指定子串的长度(要返回的字符数或字节数)。 substring() ——任意位置取子串 left() right()

    Oracle 基础语句 函数大全(字符串函数

    ORACLE PL/SQL 字符串函数、数学函数、日期函数 --【字符串函数】 --字符串截取substr(字段名,起始点,个数) select Name,substr(Name,2,4),substr(Name,0,3),substr(Name,-2,3),substr(Name,-2,1) from t1; --字符...

    自定义EL函数解决JSTL标签不足之处——按字节长度截取字符串

    这其中最最头疼的就是标题字符的截取的问题,虽然有fn:substring,但表现率以及对中文的支持均不够完善,其实最终还是归结为客户要求太高了,不过做事情就应该严谨嘛,尤其干我们这一行。。在我们老大的指点下,了解...

    java 面试题 经典收藏

    编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+...

    拆分带中文字符串.zip

    7、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我...

    PHP中使用substr()截取字符串出现中文乱码问题该怎么办

    但字符串只要出现中文字符,就有可能导致PHP substr中文乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位数不准确,substr()硬生生地将一个中文字符“锯”成两半,造成断开的字符会...

    Js自动截取字符串长度,添加省略号(……)的实现方法

    JavaScript字符串处理函数,根据定义的长度截取字符串,超出部分裁掉追加……,很多时候网页上显示的内容需要缩成“…”该方法用于处理字符串显示固定长度,超长部分用“…”代替: /**参数说明: * 根据长度截取...

    SQL 截取字符串应用代码

    字符串截取函数,只限单字节字符使用(对于中文的截取时遇上奇数长度是会出现乱码,需另行处理),本函数可截取字符串指定范围内的字符。

    C#实现根据字节数截取字符串并加上省略号的方法

    本文实例讲述了C#按字节数截取字符串并在后面加上省略号…的方法,这是一个自定义的C#函数,函数的使用说明如下: 原始字符串 提取前endIdex个字节 &lt;returns&gt;&lt;/returns&gt; 函数代码如下: public static string ...

    深入SQL截取字符串(substring与patindex)的详解

    整数,指定子串的开始位置 注:SQL中”1″表示字符串中的第一个字符,而.NET中”0″表示第一个字符length:整数,指定子串的长度(要返回的字符数或字节数) 2.patindex 返回指定表达式中某模式第一次出现的起始位置...

    SQL_Sever数据库常用语句大全.zip

    datalength返回双字符串字节长度(一个中文2个字节) Host_name返回当前用户所登录的计算机名字 system_user返回当前所登录的用户名称 user_name + while + 变量 遍历获取所有数据库用户名称 replace替换函数 ...

    go语言按显示长度截取字符串的方法

    根据显示长度截取字符串,之前php用的utf8编码,10个英文和10个汉字的显示长度差距太大,按字节截取的话又会出错出现截取半个汉字的情况,所以写了这两个函数. 这两天在折腾golang,所以就用golang重写了着连个函数.代码...

    中文字符串截取的js函数代码

    为了解决这个问题昨天写了根据字节数截取字符串的函数。具体使用很简单,跟String.subString(start, end)一样使用就可。比如:var str = “诶必塞第衣爱抚即”; var str1 = str.subCHStr(2, 2); var str2 = str....

    java面试题(JAVA代码与编程).pdf

    1、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC 汉 DEF”,6,应该输出为“我ABC”而不是“我...

    标题过长使用javascript按字节截取字符串

    做为一个前端开发人员在网页展示中经常会碰到,标题过长,需要截取字符串,用CSS的实现的话各种兼容问题,各种坑。 让后台程序截一下,又各种推托,让后台按字节截一下更是和要了后台老命一样,最后可能只会安字符...

Global site tag (gtag.js) - Google Analytics