`
陈同兵
  • 浏览: 11552 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

按字节数拆分字符串

    博客分类:
  • java
阅读更多

        按字符数拆分字符串很简单,我这里要做的是按照字节数拆分字符串。按照我这里的编码,一个汉字占2个字节,一个字母、数字、空格等是占一个字节。拆分的原理就是,先计算出这段字符串总共占多少字节,然后再一段一段的截取。在截取某一段时,若是这一段的字节不够,就往后再截取。

        1、下面这个函数是别人的,用来计算一段字符串占多少字节的。不管是汉字、字母、数字、空格、下划线等任何字符,只要在输入这段字符串时,某个字符是占多少字节,计算出来也是占多少字节。

//获取字符串的字节数
	public static int getWordCount(String s)
    {
        s = s.replaceAll("[^\\x00-\\xff]", "**");
        int length = s.length();
        return length;
    }

         2、下面这一段代码则是将某段字符串按照指定的字节数拆分成一个字符串数组。比如说数组里面每一项都是60个字节(若是已经有59个字节了,而接下来的字符是一个占两个字节的字符,如汉字,则不截取,那么这一个数组项只有59个字节)。

/**
     * 按字节数将string拆分
     * author:陈同兵
     * @param strContent
     * @param maxLength 这是每个字符串的字节数
     * @return
     */
    public static String[] split1(String strContent,int maxLength){
    	if(org.apache.commons.lang.StringUtils.isBlank(strContent))return new String[]{};        
    	if(maxLength<=0) return new String[]{strContent};
    	char[] xxxx = strContent.toCharArray();
    	int strlen=xxxx.length;//字符长度
    	int startIndex = 0,endIndex = 0;//字符数组的截取下标
    	java.util.List<String> list2 = new java.util.ArrayList();//用来存储截取后的字符串
    	char[] ch = null;
    	int b = 0;
    	for(int i = 0;i< strlen;){
    		//先按指定字节数截取一段字符,并转为串
    		endIndex = startIndex + maxLength/2;
    		ch = org.apache.commons.lang.ArrayUtils.subarray(xxxx, startIndex, endIndex);
    		//计算这段字符串的字节数
			b = getWordCount(String.valueOf(ch));
			//若它的字节数还不到指定的字节数,则进入while(){}里面继续往后截取
    		while((maxLength - b)>1){
    			endIndex = endIndex + (maxLength - b)/2;
    			if(endIndex >= strlen){
    				endIndex = strlen;
    				break;
    			}
    			ch = org.apache.commons.lang.ArrayUtils.subarray(xxxx, startIndex, endIndex);
    			b = getWordCount(String.valueOf(ch));
    		}
    		//在while里面得到合理的截取下标后,则进行截取,并放入list2里面去。
    		ch = org.apache.commons.lang.ArrayUtils.subarray(xxxx, startIndex, endIndex);
//    		System.out.println("被截取的字符串为=="+String.valueOf(ch));
    		list2.add(String.valueOf(ch));
    		startIndex = endIndex + 1;
    		i = startIndex;
    		if(endIndex >= strlen){
    			System.out.println("is over");
				break;
			}
    	}
    	
    	return (String[]) list2.toArray(new String[list2.size()]);
    }

 

0
0
分享到:
评论

相关推荐

    LabVIEW拆分中文字符串.rar

    3. **拆分字符串**:LabVIEW中的“拆分字符串”节点允许用户根据特定的分隔符将一个字符串分割成多个子字符串。对于中文字符串,确保分隔符也符合宽字符串标准,以避免拆分错误。 4. **编码格式**:中文字符的正确...

    长度是5字节的偶数倍的字符串,按5字节进行拆分,两两将位置互换

    3. 使用循环按5字节切割字符串,得到子串列表。 4. 对子串列表进行两两位置互换,可以使用两个嵌套循环来实现。 5. 将互换后的子串列表合并成新的字符串。 6. 反转新字符串并打印输出。 通过以上步骤,我们能够实现...

    字符串按奇偶项拆分为两个子数组(极简版).vi

    labview拆分按奇偶序号拆分字符串

    Pb字符串中的中文和英文(含符号)拆分

    例如,给定的标题 "Pb字符串中的中文和英文(含符号)拆分" 描述了一个需求:将像 '中字A文C' 这样的字符串拆分为 '中字文' 和 'AC'。为了实现这一功能,我们可以创建一个自定义函数,例如 `uf_split_str_enorcn()`。 ...

    plsql分割字符串

    分割字符串是指将一个较长的字符串按照特定的分隔符或规则拆分为多个较小的部分。在PL/SQL中,这种需求可以通过内置函数或自定义函数来实现。自定义函数`FUNCTION_SF_SPLIT_STRING`如上所示,是一个典型的用于分割...

    16进制与字符串、字节数组之间的转换

    相反地,要从十六进制字符串还原回原始字符串,需要将十六进制字符串拆分为字节数组,然后解码为字符串: ```csharp public static string HexStringToString(string hex, Encoding encoding) { int length = hex....

    拆分带中文字符串.zip

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

    LabView图形化编程语言之拆分中文字符串.zip

    拆分字符串涉及到将一个长字符串分解成若干个子字符串,这在处理数据、解析文本或读取文件时非常有用。 1. **字符串拆分方法**: - 使用“字符串分割”函数:LabView提供了“字符串分割”函数,可以根据特定的分隔...

    C#中使用Split方法拆分字符串实例

    在这个签名中,`separator`参数是一个字符数组,表示用于拆分字符串的分隔符。方法会返回一个字符串数组,包含所有由分隔符分隔的子字符串。 例如: ```csharp string str = "aaa-bbb-ccc-ddd-eee"; string[] ...

    android字符串和16进制转换

    这个函数会将16进制字符串拆分成两字符一组,解析每组为16进制的整数,然后将这些整数转换为字节,最终组合成一个字符串。 **使用Java提供的工具类** 除了自定义方法外,Android也提供了`java.util.Formatter`和`...

    VB常用字符串函数整理

    `LenB`函数则用于计算字符串的字节数,特别适用于处理包含多字节字符(如中文字符)的字符串,它会考虑每个字符的字节大小。 了解并熟练掌握这些VB字符串函数,能极大地提高代码的效率和可读性,帮助开发者更便捷地...

    中英文字符串分割算法C++C程序示例

    &lt;Rule.4&gt;: (基于R3)如果第pos个位置的ASCII字符编码小于'~', 那从下标pos,pos+1处拆分字符串 (下标pos归前串),将不会导致乱码; A 或者 B 的选择,需要知道以下信息: (1). 从 cut_base_pos 开始到 pos_B 结束...

    C#浮点数和16进制字节数互相转换

    本文将深入探讨如何使用C#来实现单精度浮点数(Single)与16进制字符串的相互转换。 首先,我们需要了解浮点数在计算机中的存储方式。单精度浮点数(Single)在C#中占用4个字节(32位),按照IEEE 754标准,这32位...

    labview字符串的使用

    2. 字符串数据类型:LabVIEW中的字符串由一串Unicode字符组成,每个字符占用两个字节。字符串节点通常显示为一个矩形框,内部可以包含任意数量的字符。 3. 字符串操作:LabVIEW提供了丰富的字符串操作函数,如连接...

    QT/C++实现:四字节十六进制与浮点数相互转化——三种方法(亲自验证源码)

    反之,从浮点数转换为十六进制字符串时,我们需要获取浮点数的二进制表示,将其拆分为四个字节,并将每个字节转换为十六进制字符串。 其次,是强制类型转换法。这种方法利用C++的类型转换特性,将十六进制字符串以...

    C#字符串处理

    `Split` 方法按指定的分隔符拆分字符串并返回字符串数组:`string[] strs = myString.Split(' ', 3);` 按空格拆分为最多3个部分。 10. **调整字符串长度** `PadLeft` 和 `PadRight` 方法分别在字符串左侧或右侧...

    易语言分割字符串进制转换工具

    例如,如果你有一个逗号分隔的数字列表,你可以使用该函数将其拆分成单独的数字字符串,然后再进行进制转换。 进制转换在易语言中通常涉及`整数.转换为十六进制字符串`和`整数.转换为十进制字符串`等函数。前者用于...

    C#中字符串操作函数

    这里使用了ASCII编码来获取字节,然后根据字节计算字符串的实际长度,这对于处理包含非ASCII字符的字符串尤其有用。 第二个`CutString`函数则更为简单,它直接通过`Substring`方法来截取字符串,如果输入字符串的...

    Split-由任意个全角或半角空格分隔开的任意长度的字符串

    例如,用户输入“关键词1 关键词2 关键词3”,其中的全角或半角空格就是我们要用来拆分字符串的依据。这样做可以实现更灵活的查询逻辑,比如返回包含任一或所有关键词的结果。 以下是一些关于字符串拆分的关键知识...

    字符串至字符数组实现汉字字符分割.vi

    一个汉字=2个英文字母=2字节 官方标准:1汉字=2字节 1字节(Byte)=8字位=8个二进制数,在labview中,有时需要对字符串进行分割提取其中的中文字符,需要一定方法来实现,此方法可对其实现分割,并正确显示出来。

Global site tag (gtag.js) - Google Analytics