Java按照字节来截取字符串的工具,不会出现半个汉字

原文:Java按照字节来截取字符串的工具,不会出现半个汉字

源代码下载地址:http://www.zuidaima.com/share/1550463396842496.htm

Java 按照字节来截取字符串的工具,不会出现半个汉字。一个中文两个字节,一个英文字符只占 1 个字节

1. 通常我们用于前端显示的时候,防止标题过长....

/*
 *    Copyright 2012-2013 The Haohui Network Corporation
 */
package com.haohui.common.utils;

/**
 * <pre>
 * 字符串辅助工具
 * </pre>
 *
 * @project baidamei
 * @author cevencheng <[email protected]> www.zuidaima.com
 * @create 2012-11-30 下午2:42:56
 */
public class StringTool {

	/**
	 *<b>截取指定字节长度的字符串,不能返回半个汉字</b>
	 *	例如:
	 *	如果网页最多能显示17个汉字,那么 length 则为 34
	 * StringTool.getSubString(str, 34);
	 *
	 * @param str
	 * @param length
	 * @return
	 */
	public static String getSubString(String str, int length) {
		int count = 0;
		int offset = 0;
		char[] c = str.toCharArray();
		for (int i = 0; i < c.length; i++) {
			if (c[i] > 256) {
				offset = 2;
				count += 2;
			} else {
				offset = 1;
				count++;
			}
			if (count == length) {
				return str.substring(0, i + 1);
			}
			if ((count == length + 1 && offset == 2)) {
				return str.substring(0, i);
			}
		}
		return "";
	}
}
时间: 2024-12-29 07:01:18

Java按照字节来截取字符串的工具,不会出现半个汉字的相关文章

C# 按指定(字节)长度截取字符串

/// <summary> /// 按指定(字节)长度截取字符串 /// </summary> /// <param name="str">源字符串</param> /// <returns>string</returns> private string CutStringByte(string str) { if (string.IsNullOrEmpty(str)) { return "";

C#中如何按字节数截取字符串?

今天要截取一个文档,发现C#中substring默认是将汉字当一个字节来截取的,但是我需要把汉字按照2个字节来算. 比如: str="雪洁hello" 我想要前5个字节的字符,也就是"雪洁h". 如何处理? C#中substring默认是将汉字当一个字节来截取的,那么如何按字节数截取字符串? 答案: using System; using System.Collections.Generic; using System.Web; using System.Web.U

按字节长度截取字符串

有时我们需要按照字节长度来截取字符串,但是又不希望把中文给截取散.下面提供一下utf-8的截取方法: /** * 按字节长度截取字符串 * @param orgin 需要截取的字符串 * @param length 字节长度 * @param charsetName 编码 * @return 截取后的字符串 */public static String subStringb(String orgin, int length, String charsetName) { String result

js按字节长度截取字符串

直接上代码: /** * 按字节长度截取字符串 * @param {String} str 要截取的字符串 * @param {Number} L 要截取的字节长度,注意是字节不是字符,一个汉字两个字节 */ export const cutStr = (str, L) => { var result = '' var strlen = str.length // 字符串长度 var chrlen = str.replace(/[^x00-\xff]/g, '**').length // 字节长

Java 将字节转换为十六进制字符串

/**     * 将字节转换为十六进制字符串     *      * @param mByte     * @return     */    private static String byteToHexStr(byte mByte) {        char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',                'B', 'C', 'D', 'E', 'F' };      

Java之字节数组和字符串的转换问题

今天在使用字节流复制图片的时候发现一个问题,就是将字节数组转化为字符串的时候会出现长度不同的问题.这其实是个错误的操作. public static void main(String[] args) throws IOException { // 第一种方式(不会出现问题) /*FileInputStream fis = new FileInputStream("D:\\美女.jpg"); FileOutputStream fos = new FileOutputStream(&quo

字节数截取字符串

public class ByteSub { public static void subString(String str, int a) { int bytes = 0; String result = ""; for (int x = 0; x < str.length(); x++) { byte[] b = (str.charAt(x) + "").getBytes(); bytes += b.length; if (bytes > a) {

Java随机字符串:随机数字字符串,工具类

Java中生成随机数,字符串的工具类 1. 调用方法需要传入生成字符串的长度和需要的类型 生成随机数字 生成随机字母字符串 生成随机字符串+数字等 ......... 2. 总共8种类型,具体看工具类中的注释. 1 import java.util.Date; 2 import java.util.Random; 3 import java.util.UUID; 4 5 /** 6 * @Name RandomStringUtil 7 * @Descr 生成随机字符串 8 * @author d

截取字符串,含有汉字和字母,不能截半个汉字

原文地址:http://blog.csdn.net/dreameer_dd/article/details/73457593 /** * 2017年6月19日 * * 问题描述: * 编写一个截取字符串的函数,输入为一个字符串和字节数, * 输出为按字节截取的字符串.但是要保证汉字不被截半个, * 如"我ABC"4,应该截为"我AB", * 输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半