`
senilon
  • 浏览: 15922 次
  • 来自: 重庆(目前漂在深圳)
社区版块
存档分类
最新评论

截取中英文混合字符串

阅读更多

避免截取中英文混合字符串时出现乱码情况(中文占两个字节,英文占一个字节)

public class JustTest
    {

        /**
         * 注释必须列出:主要功能、调用的前置条件和后置条件、 异常说明、关键算法、可见性决策等。
         */
        public static void main (String[] args)
            {
                // String str = "n";
                //               
                // boolean flag = Pattern.matches("[n|N]\\d{0,2}", str);
                // if(flag)
                // {
                // if(str.length()>1)
                // {
                // String s = str.substring(1);
                // System.out.println(Integer.parseInt(s));
                // }
                //                       
                // System.out.println(flag);
                // }
                JustTest j = new JustTest();
                System.out.println(new String(j.getByteSubStr("你好d我是z中文"
                        .getBytes(), 2, 6)));

            }

        /**
         * 判定指定字节数组的指定位置,是否是完整的字 如"你好".getByte(gb2312),1将返回false
         * 如"你好".getByte(gb2312),2将返回true
         *
         * @param sourceByte
         *            编码的gb2312字节数组
         * @param index
         *            需要判定的数组位置
         * @return 是完整字,返回true
         */
        public boolean splitBygb2312 (byte[] sourceByte, int index)
            {
                int i = 0;
                // 判定,直到位标志等于或者大与index时结束
                while (i < index && i < sourceByte.length)
                    {
                        // 如果此位字节高位是1。则说明是一个汉字,跳两位判定
                        if (sourceByte[i] < 0)
                            {
                                i = i + 2;
                            } else
                            {
                                // 否则说明是0-127之间的字母或者符号,跳一位
                                i++;
                            }
                    }
                // 如果位标志等于index,说明此位置开始是完整字,否则说明不是完整字
                return (i == index ? true : false);
            }

        /**
         * 截取源字节数组中,指定头index与尾index的子字节数组
         *
         * @param sourceByte需要截取的数组
         * @param beginIndex
         *            起始位置
         * @param endIndex
         *            结束位置
         * @return 子数组
         */
        public byte[] getByteSubStr (byte[] sourceByte, int beginIndex,
                int endIndex)
            {
                // 判定,如果头index不是完整字,则将截取位置前移一位
                if (!this.splitBygb2312(sourceByte, beginIndex))
                    {
                        beginIndex--;
                    }
                // 判定,如果尾index不是完整字,则将截取位置前移一位
                if (!this.splitBygb2312(sourceByte, endIndex))
                    {
                        endIndex--;
                    }

                // 需要截取的长度
                int length = endIndex - beginIndex;
                byte[] resultByte = null;
                if (sourceByte.length > endIndex)
                    {
                        // 如果末尾index没有越界,则直接拷贝数组
                        resultByte = new byte[length];
                        for (int i = 0; i < length; i++)
                            {
                                resultByte[i] = sourceByte[beginIndex + i];
                            }
                    } else
                    {
                        // 如果越界,则重置数组长度,拷贝数组
                        length = sourceByte.length - beginIndex;
                        resultByte = new byte[length];
                        for (int i = 0; i < length; i++)
                            {
                                resultByte[i] = sourceByte[beginIndex + i];
                            }
                    }
                return resultByte;
            }
    }

分享到:
评论

相关推荐

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

    Java截取中英文混合字符串的方法 Java截取中英文混合字符串的方法是指在Java语言中截取混合了中英文的字符串,并且保证汉字不被截半个的方法。这种方法在实际开发中非常有用,特别是在处理中文字符串时。 在Java中...

    高效中英文字符串截取方法

    本文将详细介绍一种用于高效截取中英文混合字符串的方法。该方法适用于处理大量数据(例如10万条记录),能够在极短的时间内(例如1秒)完成所需的操作。这种方法主要应用于ASP.NET和C#环境,对于那些希望优化字符串...

    delphi 实现截取字符串中中文+英文混合截取

    本篇文章将深入探讨如何在Delphi中实现中文和英文混合字符串的正确截取,以及相关的关键知识点。 首先,我们需要理解Delphi中的字符串类型。在Delphi中,TString类型的字符串默认是Unicode编码的,这意味着它可以...

    C++中英混合字符串截取

    以下是一个简单的例子,展示如何正确地截取中英混合字符串: ```cpp #include #include #include #include std::wstring utf8_to_wstring(const std::string& utf8_str) { std::wstring_convert...

    ASP中英文混合字符串的截取

    这三个函数在处理中英文混合字符串时非常实用,它们能够正确计算字符串的实际长度并进行相应的截取,解决了在ASP环境中中文字符截取的难题。在实际应用中,可以将这些函数集成到网页的代码中,以便在需要处理字符串...

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

    通过学习和使用如`assoc_substr`这样的自定义函数,我们可以确保在处理中英文混合字符串时获得预期的结果。同时,持续关注和学习PHP相关的字符串处理技巧和最佳实践,能够帮助我们编写出更高效、更健壮的代码。

    截取中英文字符串函数

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

    VC++根据GB2312标准的中英文混合字符串处理

    本人为了C++课程设计写的字符串处理头文件,支持中英文混合处理,多重通配符等等.

    java实现中英文混合字符截取方法

    这种方法主要用于解决在 Java 中截取字符串时遇到的问题,即在截取中英文混合字符串时如何避免汉字被截半个。 在 Java 中,字符串是以 Unicode 编码方式存储的,每个字符占用 2 个字节。因此,在截取字符串时需要...

    C#实现中英文混合字符串截取的方法

    本文实例讲述了C#实现中英文混合字符串截取.../// 截取中英文混合字符串 /// /// 字符文本 /// 截取长度 /// &lt;param name=replacetxt&gt;replacetxt替换的多余字符 /// &lt;returns&gt;&lt;/returns&gt; public string GetString(str

    c#截取指定长度,中英文混合字符串

    ### C# 截取指定长度的中英文混合字符串方法解析 在C#中处理文本时,经常需要对字符串进行截取操作。对于包含中文字符的字符串来说,由于一个中文字符通常占据两个字节的位置(在某些编码下),因此在进行长度判断...

    js中英文混合的字符串换行

    //不分中英文按字符串长度循环每个字符截取换行 这个是隔10个字符换行一次 String psStr="asdfghjklzxcvbnmzxcvbnmsdfghaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbb"; String aa=""; String bb=""; for (int i...

    PHP针对中英文混合字符串长度判断及截取方法示例

    而在cut_str()函数中,提供了截取中英文混合字符串的方法。该函数首先计算出要截取的长度(cutlength),然后通过循环遍历源字符串(sourcestr)。在遍历过程中,根据字符的ASCII值判断当前字符是英文字符还是中文...

    C#中英文混合字符串截取函数

    在文档中,提供了两个C#函数的实现代码,用于截取中英文混合字符串。这两个函数在实现时考虑了中英文字符编码的不同,以确保截取后的内容能够正确显示。 第一个函数是`CutStr`,它的作用是截取给定字符串至最大长度...

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

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

    JavaScript截取中文字符串

    假设有一个包含中英文混合的字符串`"Hello, 你好!"`,现在希望截取前5个字符(其中中文字符按两个字符计): ```javascript var str = "Hello, 你好!"; var result = subString(str, 5, true); console.log(result)...

    PHP 不区分中英文截取utf8字符串

    在PHP编程中,处理UTF-8编码的...通过分析这个示例,你可以更深入地理解如何在PHP中处理UTF-8编码的字符串,以及如何在中英文混合的情况下进行截取。记得打开文件查看具体的实现方式,以便学习和应用到自己的项目中。

    c++截取汉字和英文混合字符串代码实例

    C++截取汉字和英文混合字符串是一种非常常见的操作,在实际开发中,我们经常需要截取字符串中的汉字和英文部分。然而,C++的标准库函数string.substr()只能按英文截取,如果是汉字可能需要计算字符个数,如果是汉字...

Global site tag (gtag.js) - Google Analytics