`
junli0411
  • 浏览: 139186 次
  • 来自: ...
社区版块
存档分类
最新评论

java截取包含汉字字符串

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


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();
        System.out.println("Length of this String ===>" + bt.length);
        if (byteNum > 1) {
            if (bt[byteNum] < 0) {
                pBinInt("bt[byteNum]", bt[byteNum]);
                System.out.println("bt[" + byteNum + "] = " + bt[byteNum]);// 1
                System.out
                        .println("bt[" + byteNum + "] = " + (int) bt[byteNum]);// 2
                System.out.println("bt[" + byteNum + "] = "
                        + (bt[byteNum] & 0x000000FF));// 3
                System.out.println("bt[" + byteNum + "] = "
                        + (bt[byteNum + 1] & 0XFF));// 4
                String substrx = new String(bt, 0, --byteNum);
                System.out.println(substrx);
            } else {
                String substrex = new String(bt, 0, byteNum);
                System.out.println(substrex);
            }

        } else {
            if (byteNum == 1) {
                if (bt[byteNum] < 0) {
                    String substr1 = new String(bt, 0, --byteNum);
                    System.out.println(substr1);
                } else {
                    String subStr2 = new String(bt, 0, byteNum);
                    System.out.println(subStr2);
                }
            } else {
                System.out.println("输入错误!!!请输入大于零的整数:");
            }
        }
    }

    static void pBinInt(String s, int i) {
        System.out.println(s + ", int: " + i + ", binary: ");
        System.out.print("   ");
        for (int j = 31; j >= 0; j--)
            if (((1 << j) & i) != 0)
                System.out.print("1");
            else
                System.out.print("0");
        System.out.println();
    }
}

class TestSplitString {
    public static void main(String args[]) {
        String str = "我abc的DEFe";
        int num = 6;
        SplitString sptstr = new SplitString(str, num);
        sptstr.splitIt();
    }
}


分享到:
评论
1 楼 livemumu 2008-12-18  
没有判断高位溢出。。。你把测试数据num改为50看看

相关推荐

    java中截取带汉字的字符串

    在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取这些字符串。如果直接按照字节(byte)来进行分割,很容易导致中文字符被截断一半,从而形成乱码。这是因为一个中文字符通常占用多...

    截取指定长度的字符串

    对于包含汉字的字符串,需要注意编码问题。不同的编程语言对非ASCII字符(如汉字)的处理方式不同。在Python 3中,字符串默认使用Unicode编码,可以直接处理汉字。而在一些其他语言中,如Java,可能需要先将字符串...

    关于java按字节截取带有汉字的字符串的解法

    在Java编程语言中,处理带有汉字的字符串时,由于汉字占据多个字节,按照字节进行截取可能会导致汉字被不完整地分割,从而产生乱码。为了解决这个问题,我们需要理解Unicode编码以及如何在Java中正确处理多字节字符...

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

    Java 中有多种方式可以实现字符串截取,包括使用 `substring`、`split` 和 `StringTokenizer` 等方法。在本例中,我们使用 `substring` 方法来实现字符串截取。 substring 方法 `substring` 方法用于从字符串中...

    Java精确截取字符串.pdf

    然而,当处理包含中文字符的字符串时,简单的按字符截取可能会出现问题,因为中文字符通常占用两个字节,而英文字符只占用一个字节。为了实现更精确的截取,可以采用如下的方法: ```java private String str; ...

    impala中substr()截取中文字符串乱码的问题

    然而,当涉及到处理中文字符时,Impala的内置函数`substr()`和`substring()`可能会遇到一些挑战,尤其是在截取中文字符串时可能出现乱码问题。这是因为这两个函数在设计时可能没有充分考虑多字节字符集,如UTF-8,而...

    截取字符串

    在编程领域,字符串操作是一项基础且重要的任务,而“截取字符串”是其中的一个关键功能。这个小demo展示了如何在不同的编程环境中实现字符串截取,同时也涉及到字符串的空格处理。接下来,我们将深入探讨这两个主题...

    截取如下字符串“java程序教程”的前5个字节,字符串应该为“java程”,截取前6个字符,字符串也应该为“java程”,程序实现之.

    题目中提到“截取前5个字节, 字符串应该为‘java程’”,意味着我们需要理解,在UTF-8编码格式下,英文字符通常占用1个字节,而中文字符则占用3个字节。因此,实际上,从“java程序教程”中截取前5个字节,得到的...

    Java精确截取字符串.doc

    总的来说,处理中文字符串截取的关键在于识别出汉字字符,并根据其字节位置进行适当的调整。在Java中,可以通过字节码判断是否为中文字符,从而实现精确截取。这些技术在处理中文文本时非常实用,尤其在界面展示、...

    Java截取中英文混合字符串的方法

    这种方法在实际开发中非常有用,特别是在处理中文字符串时。 在Java中,字符串的截取可以使用substring方法,但是这种方法不能保证汉字不被截半个,因为它是按照字符的个数来截取的,而中文字符占用两个字节,英文...

    按byte截取字符串

    它可能包含了一个名为`sliceByByte`的方法,接受一个字符串和要截取的字节数作为参数,然后按照上述步骤进行操作。 SliceByByteTest.java作为测试文件,可能会创建一些测试用例,包括各种长度和编码的字符串,来...

    java中英文字符串截取

    本文将深入探讨如何在Java中有效地截取包含中文和英文字符的字符串,并解释给出的代码片段背后的逻辑。 ### Java中英文字符串截取的关键点 1. **字符编码的影响**:中文字符在不同的编码方式下占用的字节数不同。...

    java 截取字符串(判断汉字)

    该方法能够确保在截断中文字符串时不会出现乱码,并且可以适用于JSP页面中的中文字符串截取需求。 #### 方法实现 ```java /** * 截取字符串,len为字节长度 * @param str 需要截取的字符串 * @param len 字节...

    java按字节截取带有汉字的字符串的解法(推荐)

    在Java编程语言中,处理包含汉字的字符串时,由于汉字在不同编码格式下占用的字节数不同,按字节截取字符串会面临特殊挑战。本文将深入探讨如何正确地按字节截取带有汉字的字符串,以确保不出现半字符或者乱码的情况...

    前后台实现精确截取指定长度字符串(考虑全角半角)

    此方法用于去除字符串中的空白字符,包括空格、制表符等,以提高截取精度。 ```csharp public String ClearBlank(String str) { CharEnumerator myenum = str.GetEnumerator(); str = String.Empty; while ...

    字符串 截取

    根据给定文件的信息,本文将围绕“字符串截取”这一主题进行深入探讨,重点在于如何在Java环境下实现对包含中文字符的字符串进行精确截取,同时确保不会出现半个汉字的情况。 ### 字符串截取的基本概念 在计算机...

    [待删除]字符串截取 - 中英文

    因此,当在Java程序中处理包含中英文混合的字符串时,必须考虑到编码差异,以避免截取错误或乱码的出现。 ### 实践应用 在实际开发中,特别是在Web开发、文本分析等领域,正确处理多语言字符串是非常关键的。使用...

    java 中字符串只中英数字混合需要分割的解决办法

    这个方法用来处理java中可能有一些特别的需要,一大串中英文混合,需要中间截断或是中英中间添加一些特别的标识,调用这个方法 第一个参数是要处理的字符串,第二个是要在中英字符中间插入的字符。调用就可以得到想...

    Java精确截取字符串[归类].pdf

    在Java编程中,有时我们需要对字符串...总的来说,Java中的字符串截取需要考虑到字符编码和中文字符的特殊性,确保截取的结果既准确又符合预期。开发者需要根据实际场景选择合适的方法,保证程序的健壮性和用户体验。

    统计字符串中英文标点数量并截取.zip

    这个压缩包内包含的可能是Java代码示例(如csdn-demo),用于批量处理字符串,统计其中的中英文标点符号的数量,并根据指定的字符编码(GBK或UTF)来计算字符串的总长度。如果字符串的总长度超过预设的最大长度,...

Global site tag (gtag.js) - Google Analytics