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的`String`类能够正确处理Unicode字符,所以在正确使用`substring()`时,...
面试题 1 的截取字符串函数是一个典型的例子,要求面试者编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。这个问题的关键是考虑中文字符和英文字符的占用字节数问题,中文字符占两...
实现一个字符串截取的函数** - **函数**: 需要考虑多字节编码如GBK的中文字符截取。 ```php function mySubstr($string, $start, $length) { $result = ''; $len = mb_strlen($string, 'GBK'); $end = $...
该算法使用了 isLetter 方法来判断字符是否为字母, lengths 方法来计算字符串的字节数,subString 方法来截取字符串。 例如,以下代码使用 lengths 方法计算字符串的字节数: ```java public static int lengths...
2. **按字节截取字符串** 这个问题涉及到字符串处理和字符编码。要求在截取字符串时确保不会截断汉字。由于汉字在UTF-8编码下通常占用两个字节,我们需要考虑到这一点。`isLetter`方法检查一个字符是否是字母,这里...
10. 正则表达式:在Java中可以使用正则表达式进行复杂的文本处理,例如使用正则表达式截取字符串中符合特定模式的字符。 11. 位操作:如在给出的函数中,x=x|(x+1)是利用位运算进行操作的示例,这在编程中是处理位...
在笔试中,可能会遇到要求编写一个函数,能够在保持字符串完整性的前提下进行截取操作,尤其是涉及到中文字符时,需要理解Unicode编码和JAVA对多字节字符的支持。中文字符可能占用多个字节,因此简单的按字节数截取...
- 方法`Interception()`负责实现截取字符串的功能,其中利用了正则表达式来判断字符是否为汉字。 2. **问题分析**: - 代码中出现了大量不完整的代码片段,导致无法直接运行。 - 正确实现这一功能需要重写这些...
7. **字符串处理**:掌握String类的基本操作,如创建、比较、拼接、截取等。了解StringBuilder和StringBuffer在字符串拼接中的性能优势。 8. **类与对象**:理解构造函数的作用,掌握构造器的重载。了解访问控制...
【阿里巴巴2009年Java笔试题解析】 在2009年的阿里巴巴Java笔试环节,应聘者们面临了一系列挑战性的题目,旨在考察他们的基础理论、编程能力以及问题解决技巧。这些题目涵盖了Java语言的核心概念、数据结构、算法、...
**面试题1:怎样截取字符串** **题目描述**:设计一个函数,接受一个字符串和一个整数作为参数,返回一个按照指定字节数截取的字符串,但需确保不会截断汉字(每个汉字占两个字节)。例如,对于输入"我ABC"和数字4...
4. 代码'abcdefg'.substring(2,3)会截取字符串从索引2到3(不包括3)的部分,答案是C.c。 5. 'abcdefg'.indexOf('D')找不到'D',返回-1,答案是C. -1。 简答题: 1. 工作中遇到的兼容性问题可能涉及浏览器差异,...
按字节截取字符串同时保证汉字完整 **需求分析:** - 需要编写一个函数,输入一个字符串和一个长度值,输出按照指定长度截取后的字符串。 - 截取过程中需要保证不会出现汉字被截断的情况。 **代码示例:** ```...
#### 中文字符串截取 使用`mb_substr()`函数处理多字节字符,防止乱码。 #### 显示客户端与服务器IP 使用`$_SERVER['REMOTE_ADDR']`获取客户端IP,`$_SERVER['SERVER_ADDR']`获取服务器IP。 #### include与...
substring方法用于截取字符串的一部分,参数为起始位置和结束位置,substring(2, 5)表示从第二个字符开始截取到第五个字符。 10. 正确的结果是编译非法。Java中的继承关系是单继承多实现,子类不能将父类对象赋值给...
16. **截取字符串的函数** 编写这样的函数需要考虑字符编码和字符串边界问题,确保汉字不被截断。 17. **打印昨天的当前时刻** 使用`java.util.Calendar`或`java.time`包中的类来获取昨天的日期,并格式化输出。 ...