`
skydove
  • 浏览: 18590 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

截取包含中、英文的字符串

阅读更多
// 用字节数组方法截取包含中、英文的字符串
	public static String splitStrByByte(String a, int length) {
		byte strs[] = a.getBytes();
		long count = 0;
		for (int i = 0; i < length; i++) {
			if (strs[i] < 0) {
				count++;
			}
		}

		// 如果有不完整的汉字,肯定是最后一个字符有问题
		int getLeng = count % 2 == 0 ? length : length - 1;

		return new String(strs, 0, getLeng);
	}

	// 用字符数组方法截取包含中、英文的字符串
	public static String splitStrByChar(String a, int length) {
		char strs[] = a.toCharArray();
		int charCount = 0;
		int temp = 0;
		for (char c : strs) {

			temp = temp + String.valueOf(c).getBytes().length;
			if (temp > length) {
				break;
			}
			charCount++;
		}

		return new String(strs, 0, charCount); // 注意这里:char数组,后面是字符数,而非byte数组的字节数
	}

	public static String splitStrByString(String src, int length) {
		
		byte [] strs = src.getBytes();
		String result = new String(strs, 0, length);

		if (!src.startsWith(result)) {
			result = new String(strs, 0, length - 1);
		}

		return result;
	}

 

 

以上3种方法都能达到按字节数截取字符串的目的

本机测试循环1万次,可以发现:

splitStrByByte耗时:94ms

splitStrByChar耗时:265ms ~ 281ms

splitStrByString耗时:141ms

可见第一种效率高点.

分享到:
评论

相关推荐

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

    delphi 实现截取字符串中中文+英文混合截取,当字符串中包含中文和英文支付时,有时候会将一个中文截取1半,出现乱码。该demo能很好的解决该问题

    中英文字符串按字节截取

    截取含有中英文的字符串,按字节进行截取,当出现汉字时不能截取半个汉字要把汉字补全。

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

    13年(实习期间)飞娱互动有限公司面试游戏开发客户端/服务器端时的面试题的第一道编程题,当时就差这题没做出来,回去后想出来的。 截取一定长度的字符串,保证不把汉字截断。

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

    关于java按字节截取带有汉字的字符串的解法.不错的一个程序。我也是从高手那拿来的,觉得不错,传上来给感兴趣的朋友学习学习。

    C#字符串的截取函数用法总结

    在C#中字符串截取函数包括有substring 函数,Remove 函数,indexOf 函数,它们三个都可以对字符串进行截取操作,下面我们来分别介绍一下。 下面是截取字符串过程中我们必须知道的以下函数:substring 函数、Remove ...

    可以保证单词完整性的PHP英文字符串截取代码分享

    主要介绍了可以保证单词完整性的PHP英文字符串截取代码分享,代码中包含详细注释,需要的朋友可以参考下

    php字符串截取问题

    但是在英文和汉字混合的情况下会出现如下问题: 如果有这样一个字符串 $str=”这是一个字符串”; 为了截取该串的前10个字符,使用 if(strlen($str)&gt;10) $str=substr($str,10).”…”; 那么,echo $str的输出应该是...

    几个bing 比赛

    但现实生活中,我们也经常能看到一些毫无规则的字符串,导致词典无法正常收录,不过,我们是否可以从无规则的字符串中提取出正规的单词呢? 例如有一个字符串"iinbinbing",截取不同位置的字符‘b’、‘i’、‘n...

    php 解决substr()截取中文字符乱码问题

    在php中如果我要用substr()截取字符串全英文的没问题,如果包括有中文或英文就会悲剧了,但大家也 别切我们可以使用其它办法来解决。 php截取中文字符串出现乱码,这是最近发现的事情,先前我曾经写过一篇关于自动...

    js随机生成字母数字组合的字符串 随机动画数字

    最近有个需求,是需要生成3-32位长度的字母数字组合的随机字符串,另一个是生成43位随机字符串。 方法一 奇妙的写法 Math.random().toString(36).substr(2); 输出结果 解释 很有意思,研究了一下,基本上to

    python 基础 字符串有关的函数及使用方法

    字符串详细解答及有关函数 大白话和你一起学python,最基础的内容,希望和大家一起学习,一起进步 字符串是一种文本类型,可以是ASCII字符、各类符号以及Unicode字符,可以是一个也可以是多个字符。 ASCII:美国标准...

    C#实现对用户输入数据进行校验的类实例

    这个C#类包含了各种常用数据验证的函数,包含验证是否是数字,校验email格式,区分中英文截取字符串,区分中英文计算字符串长度,检测是否包含中文字符,判断是否包含特定字符等 using System; using System.Text; ...

    delphi 开发经验技巧宝典源码

    0158 如何将字符串中的任意字符转换成小写 103 0159 如何将字符串首字母大写 104 5.3 字符串的相关判断 105 0160 判断某一字符是否在字符串中 105 0161 判断字符串是由数字、大写字母或小写字母组成 105 ...

    delphi 开发经验技巧宝典源码06

    0158 如何将字符串中的任意字符转换成小写 103 0159 如何将字符串首字母大写 104 5.3 字符串的相关判断 105 0160 判断某一字符是否在字符串中 105 0161 判断字符串是由数字、大写字母或小写字母组成 105 ...

    Excel VBA自定义常用函数

    包含8个自定义函数: 1.提取中文,支持多个中英文交替2.赋值3.Copy首行,给其他行赋值4.获得链接5.截字符串中首尾两个-之间的部分6.提取中文前面的英文7.截取字符串中最后一次出现要str之后的字符串

    php数据操作类mydb.php,跳转类redir.php,上传文件类upfile,常用的一些验证类

    数据库操作类 把添加,删除,修改,单独查看,分页查看表的所有操作...chy.php 常用的功能内,一些字符串的判断符合手机,电话,email,等的正则,字符串的长度,截取等包含中英文混合的处理 ************** 以后会继续丰富这些类

    FreeMark学习笔记

    截取子串可以根据字符串的索引来进行,截取子串时如果只指定了一个索引值,则用于取得字符串中指定索引所对应的字符;如果指定两个索引值,则返回两个索引中间的字符串子串.假如有如下数据模型: Map root = new HashMap...

    div中英文无法自动换行的解决办法

    原因:这是因为div中,英文字母之间没有空格的话,它会默认认为这是一个英文单词,所以单词就一次输出不换行。那么,难道我们得在每个字母中间加入一个空格来解决这个问题么?其实不用的,可以通过CSS实现。 解决...

    PHP开发实战1200例源码

    实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式 147 实例116 验证电话号码的格式是否正确 147 实例117 验证Email地址格式是否正确 148 实例118 验证IP地址是否有效 149 实例119 统计关键字的查询结果 150...

Global site tag (gtag.js) - Google Analytics