`
cunzhangok
  • 浏览: 66314 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

java 面试中的一道截取字符串的经典题目

阅读更多
特此申明,本文原文出自http://www.dnbcw.com/biancheng/java/msij202835.html
小菜发现代码有严重的bug,特此修复,并写出了较完整的代码
  在原来的代码中,如果输入的汉子是连续的:
  如:我A结束BC汉DEF   那么截取第5个的时候,就出问题。有兴趣的同学可以看看原来的代码

下面是我修正后的代码:
    package string;
class SplitString {
private String str;
private int byteNum;

public SplitString() {
}

public SplitString(String str, int byteNum) {
this.str = str;
this.byteNum = byteNum;

}

public void splitIt() {
byte bt[] = str.getBytes();
        int mark=byteNum;
if (bt[byteNum]<0)
        {
            while (mark>-1&&bt[mark]<0 )
            {
            if (bt[mark]<0)
              mark--;
            }
            mark++;
            //说明连续出现的是偶数个负数
            if ((byteNum-mark)/2*2==(byteNum-mark))
            {
            System.out.println(new String(bt,0,byteNum));
            }else
            {
            //如果连续出现的是奇数个负数,那么就说明占用了半个汉字了
            System.out.println(new String(bt,0,byteNum-1));
            }
        }else
        {
        System.out.println(new String(bt,0,byteNum));
        }
}
}

public class TestSplitString {
public static void main(String args[]) {
String str = "我A结束BC汉DEF";
int num = 1;
SplitString sptstr = new SplitString(str, num);
sptstr.splitIt();
}
}
分享到:
评论

相关推荐

    Java面试宝典-经典

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

    java经典面试题.doc

    ### Java经典面试题知识点解析 #### 1. super()与this()的区别? - **super()**:用于调用父类的构造方法。在一个子类的构造方法中,如果要调用父类的构造方法,必须使用`super()`,并且这个调用语句必须放在子类...

    java经典面试题 包含各大名企的题库

    16. **截取字符串的函数**: - 编写这样的函数需要处理字符编码,尤其是中文字符,确保每个汉字作为一个整体处理,避免截断。 以上内容仅是Java面试中的一部分常见问题和知识点,实际面试可能涵盖更多主题,如多...

    Java经典面试题大全.doc

    16. **截取字符串的函数**: 这需要考虑到字符编码,尤其是中文字符可能占两个字节。可以使用`substring()`方法,同时判断截取位置是否处于中文字符的边界。 17. **打印昨天的当前时刻**: 可以使用Java的日期...

    java必备的经典面试题

    编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串 这个问题的关键在于处理中文字符,因为中文字符在UTF-8编码下通常占用3个字节,所以需要确保不会截断中文字符。示例代码...

    java经典大型软件公司面试题(免费).pdf

    16. 截取字符串: 此问题涉及字符串处理,需确保汉字完整,避免半角字符问题。 17. 打印昨天的当前时刻: 使用`java.util.Calendar`或`java.time`包的API获取日期。 18. 文件读写计数器: 使用`FileInputStream...

    深圳中软技术最新笔试题目

    这个问题要求我们编写一个函数,能够按字节截取字符串,但同时避免将汉字截断。解决方法通常涉及判断当前字节是否属于一个多字节字符(如UTF-8编码下的汉字),如果是,则需要考虑下一个字节。可以使用Java或Python...

    php经典面试题

    #### 题目十一:多字节字符串截取 1. **多字节字符串函数**: - `mb_substr()`:用于截取多字节字符串的一部分。 - 示例:`$substring = mb_substr($string, 0, 5, 'UTF-8');` 以上就是根据提供的 PHP 经典面试题...

    PHP经典面试题集

    - 也是输出字符串,但它是函数,有返回值。 - 可以用于条件判断中。 - **print_r**: - 递归打印,主要用于输出数组或对象的结构。 - 非常适合调试,可以清晰地展示复杂数据结构。 #### 3. 实现HTML和PHP分离的...

    java笔试算法题及答案.doc

    Java笔试中的算法题是面试和招聘过程中的常见部分,它们主要考察候选人的编程能力和问题解决技巧。以下是基于提供的文件内容的几个关键知识点: 1. **数组排序**: - 在第一道题中,展示了如何使用Java对以逗号...

    PHP经典面试题集锦

    在PHP面试中,掌握这些经典题目可以帮助你更好地理解语言核心概念和实际应用。以下是对一些关键知识点的详细解释: 1. **PHP获取前一天时间**: ```php $a = date("Y-m-d H:i:s", strtotime("-1 day")); print_r...

    Leetcode解决方案

    2. 字符串处理:Java的`String`类提供了大量实用的方法,如`substring()`截取字符串,`indexOf()`查找子串,`split()`分割字符串等。在处理字符串问题时,这些方法是不可或缺的。 3. 遍历与迭代:熟悉`for-each`...

Global site tag (gtag.js) - Google Analytics