`
superich2008
  • 浏览: 324418 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

如何正确截取中英文混合的字符串?

 
阅读更多

问题:有这样一个字符串“汉ABC字DEF”,假设在GBK编码格式下,一个中文字符占2个字节,需求是截取前6个字符,也就是“汉ABC”,而不是“汉ABC”+半个“字”。

解决方案:

public class StringDemo
{
public static void main(String[] args)
{
//System.getProperties().list(System.out);

String str = "汉ABC字DEF";
int index = 6;

System.out.println(str.length());
System.out.println(str.getBytes().length);

System.out.println(getStr(str, index));

}

/**
* 截取字符串前n个字符(含有中文字符的也通用)
* GBK编码格式中文字符占2个字节,UTF-8编码格式中文字符占3个字节
* @param str
* @param index
* @return
*/
public static String getStr(String str, int index)
{
if (null == str)
{
return null;
}

int count = 0;

StringBuilder sb = new StringBuilder();

for (int i = 0; i < str.length(); i++)
{
String s = String.valueOf(str.charAt(i));
int len = s.getBytes().length;
if (len == 1)
{
count++;
}
else
{
count+=len;
}

if (index < count)
{
break;
}
else
{
sb.append(s);
}
}
return sb.toString();
}
}

分享到:
评论

相关推荐

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

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

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

    本文详细介绍了Java中截取中英文混合字符串的方法,并通过实例演示了其应用。 首先,我们了解到,在Java中,可以通过substring方法来截取字符串。但是,这种基于字符数量的截取方式并不适用于中英文混合的情况,...

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

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

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

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

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

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

    截取中英文字符串函数

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

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

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

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

    这个方法巧妙地处理了中英文混合字符串的截取问题,确保了截取结果的正确性。在实际应用中,你可以根据需要调整这个方法,例如添加对其他多字节字符集的支持,或者优化性能。此外,此方法也可以作为一个基础,扩展到...

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

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

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

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

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

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

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

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

    JavaScript截取中文字符串

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

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

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

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

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

    javascript截取字符串(通过substring实现并支持中英文混合)

    示例函数sub()使用正则表达式来处理中英文混合字符串,通过比较替换后的字符串长度来判断截取长度是否正确。 示例代码如下: ```javascript var sub = function(str, n) { var r = /[^\x00-\xff]/g; if (str....

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

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

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

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

Global site tag (gtag.js) - Google Analytics