`

笔试题:按字节数来截取字符串

 
阅读更多

je上看到笔试题:

http://wangyu.iteye.com/blog/190753

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

 

不过作者给出的答案是错误的:

 

答:代码如下:  
  
package test;  
  
class SplitString  
  
{  
  
String SplitStr;  
  
int SplitByte;  
  
public SplitString(String str,int bytes)  
  
{  
  
SplitStr=str;  
  
SplitByte=bytes;  
  
System.out.println("The String is:′"+SplitStr+"′;SplitBytes="+SplitByte);  
  
}  
  
public void SplitIt()  
  
{  
  
int loopCount;  
  
loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split  
  
Byte+1);  
  
System.out.println("Will Split into "+loopCount);  
  
for (int i=1;i<=loopCount ;i++ )  
  
{  
  
if (i==loopCount){  
  
System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));  
  
} else {  
  
System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));  
  
}  
  
}  
  
}  
  
public static void main(String[] args)  
  
{  
  
SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人0ewldfls=103",4);  
  
ss.SplitIt();  
  
}  
  
}  

 

我这里给他纠正一下,代码如下:

//package com.liany.demo.cutstring;

/**
 * 按字节数来截取字符串,遇到汉字要整个字截取,不能只截取一半
 * @author liany
 * 2012-04-20
 */
public class CutString {
	  
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String str = "1我45人有的";
		System.out.println(cutString(str, 1));
		System.out.println(cutString(str, 2));
		System.out.println(cutString(str, 3));
		System.out.println(cutString(str, 4));
		System.out.println(cutString(str, 5));
		System.out.println(cutString(str, 6));
		System.out.println(cutString(str, 7));
		System.out.println(cutString(str, 8));
	}
	
	/**
	 * 按字节数来截取字符串,遇到汉字要整个字截取,不能只截取一半
	 * @param str	原始字符串
	 * @param bytes	要截取的字节数
	 */
	public static String cutString(String str, int bytes){
		int i = 0;		//字符串序号
		int count = 0;	//累计字节数
		while(count < bytes){
			byte[] b = (str.charAt(i++)+"").getBytes();
			count += b.length;
		}
		return str.substring(0, i);
	}
}

 截取的结果是:

1
1我
1我
1我4
1我45
1我45人
1我45人
1我45人有

分享到:
评论

相关推荐

    上海交通银行JAVA笔试编程题

    在处理中文字符串时,特别需要注意的是,由于中文字符通常占两个字节,因此截取时不能按照单个字节计算,否则可能会出现半个字符的情况。Java的`String`类能够正确处理Unicode字符,所以在正确使用`substring()`时,...

    常见的Java上机面试题.pdf

    面试题 1 的截取字符串函数是一个典型的例子,要求面试者编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。这个问题的关键是考虑中文字符和英文字符的占用字节数问题,中文字符占两...

    php笔试题 百度

    实现一个字符串截取的函数** - **函数**: 需要考虑多字节编码如GBK的中文字符截取。 ```php function mySubstr($string, $start, $length) { $result = ''; $len = mb_strlen($string, 'GBK'); $end = $...

    面试知识点总结--java笔试算法题及答案.pdf

    该算法使用了 isLetter 方法来判断字符是否为字母, lengths 方法来计算字符串的字节数,subString 方法来截取字符串。 例如,以下代码使用 lengths 方法计算字符串的字节数: ```java public static int lengths...

    java笔试算法题及答案.doc

    2. **按字节截取字符串** 这个问题涉及到字符串处理和字符编码。要求在截取字符串时确保不会截断汉字。由于汉字在UTF-8编码下通常占用两个字节,我们需要考虑到这一点。`isLetter`方法检查一个字符是否是字母,这里...

    搜狗-2015-研发类笔试题

    10. 正则表达式:在Java中可以使用正则表达式进行复杂的文本处理,例如使用正则表达式截取字符串中符合特定模式的字符。 11. 位操作:如在给出的函数中,x=x|(x+1)是利用位运算进行操作的示例,这在编程中是处理位...

    zw_上海交通银行笔试编程题

    在笔试中,可能会遇到要求编写一个函数,能够在保持字符串完整性的前提下进行截取操作,尤其是涉及到中文字符时,需要理解Unicode编码和JAVA对多字节字符的支持。中文字符可能占用多个字节,因此简单的按字节数截取...

    常见的Java上机面试题.docx

    - 方法`Interception()`负责实现截取字符串的功能,其中利用了正则表达式来判断字符是否为汉字。 2. **问题分析**: - 代码中出现了大量不完整的代码片段,导致无法直接运行。 - 正确实现这一功能需要重写这些...

    java笔试题

    7. **字符串处理**:掌握String类的基本操作,如创建、比较、拼接、截取等。了解StringBuilder和StringBuffer在字符串拼接中的性能优势。 8. **类与对象**:理解构造函数的作用,掌握构造器的重载。了解访问控制...

    2009阿里巴巴java笔试题

    【阿里巴巴2009年Java笔试题解析】 在2009年的阿里巴巴Java笔试环节,应聘者们面临了一系列挑战性的题目,旨在考察他们的基础理论、编程能力以及问题解决技巧。这些题目涵盖了Java语言的核心概念、数据结构、算法、...

    常见的Java上机面试题

    **面试题1:怎样截取字符串** **题目描述**:设计一个函数,接受一个字符串和一个整数作为参数,返回一个按照指定字节数截取的字符串,但需确保不会截断汉字(每个汉字占两个字节)。例如,对于输入"我ABC"和数字4...

    搜米java程序员笔试题面试题.pdf,这是一份不错的文件

    4. 代码'abcdefg'.substring(2,3)会截取字符串从索引2到3(不包括3)的部分,答案是C.c。 5. 'abcdefg'.indexOf('D')找不到'D',返回-1,答案是C. -1。 简答题: 1. 工作中遇到的兼容性问题可能涉及浏览器差异,...

    PHP笔试题-归宗

    #### 中文字符串截取 使用`mb_substr()`函数处理多字节字符,防止乱码。 #### 显示客户端与服务器IP 使用`$_SERVER['REMOTE_ADDR']`获取客户端IP,`$_SERVER['SERVER_ADDR']`获取服务器IP。 #### include与...

    Java_笔试选择题.pdf

    substring方法用于截取字符串的一部分,参数为起始位置和结束位置,substring(2, 5)表示从第二个字符开始截取到第五个字符。 10. 正确的结果是编译非法。Java中的继承关系是单继承多实现,子类不能将父类对象赋值给...

    Java面试题以及答案整理.pdf

    16. **截取字符串的函数** 编写这样的函数需要考虑字符编码和字符串边界问题,确保汉字不被截断。 17. **打印昨天的当前时刻** 使用`java.util.Calendar`或`java.time`包中的类来获取昨天的日期,并格式化输出。 ...

Global site tag (gtag.js) - Google Analytics