关键字: 字符串长度
/*
* * 计算字符串的字节长度(字母数字计1,汉字及标点计2) *
*/
public static int byteLength(String string) {
int count = 0;
for (int i = 0; i < string.length(); i++) {
if (Integer.toHexString(string.charAt(i)).length() == 4) {
count += 2;
} else {
count++;
}
}
return count;
}
}
/**
* @author cn
* @param s 要截取的字符串
* @param length 要截取字符串的长度->是字节一个汉字2个字节
* return 返回length长度的字符串(含汉字)
*/
public static String bSubstring(String s, int length) throws Exception
{
byte[] bytes = s.getBytes("Unicode");
int n = 0; // 表示当前的字节数
int i = 2; // 要截取的字节数,从第3个字节开始
for (; i < bytes.length && n < length; i++){
// 奇数位置,如3、5、7等,为UCS2编码中两个字节的第二个字节
if (i % 2 == 1){
n++; // 在UCS2第二个字节时n加1
}
else{
// 当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节
if (bytes[i] != 0){
n++;
}
}
}
// 如果i为奇数时,处理成偶数
/*if (i % 2 == 1){
// 该UCS2字符是汉字时,去掉这个截一半的汉字
if (bytes[i - 1] != 0)
i = i - 1;
// 该UCS2字符是字母或数字,则保留该字符
else
i = i + 1;
}*/
//将截一半的汉字要保留
if (i % 2 == 1){
i = i + 1;
}
return new String(bytes, 0, i, "Unicode");
}
分享到:
相关推荐
在C#中,我们可以使用`System.Text.Encoding`类来获取字符串的字节表示。例如,如果字符串是UTF-8编码,可以使用`Encoding.UTF8.GetBytes()`方法: ```csharp string str = "你好,世界"; byte[] bytes = Encoding....
本文将详细介绍如何使用C#实现字符串的固定长度截取,并深入探讨背后的原理和技术细节。 #### 方法一:使用Substring方法 最直接的方式是使用`Substring`方法来截取指定长度的字符串。这种方法适用于纯英文或单...
注意,由于字符可能由多个字节组成(如UTF-8编码中的多字节字符),因此截取字节时可能会截断字符。为了确保完整性,通常需要以字符边界进行截取,这可能需要借助于`codecs`库的`decode()`和`iterdecode()`等方法。 ...
在实际开发中,经常会遇到需要按照字节长度截取字符串的需求,特别是在网络传输或存储限制的场景下。然而,简单的使用`Substring`方法可能无法满足需求,因为该方法是基于字符计数而非字节计数。对于全英文字符串...
这个函数`SafeSubstring`接收字符串S、起始字节位置StartByte和截取的字节数LenBytes,返回一个从指定字节位置开始,长度为LenBytes字节的新字符串。注意,这个函数假设输入的都是有效的字节位置,没有进行边界检查...
// 获取字符串的字节数组,使用UTF-8编码 byte[] bytes = str.getBytes(StandardCharsets.UTF_8); if (byteLength > bytes.length) { byteLength = bytes.length; } // 创建一个新的字节数组,只包含前...
首先,字符串截取的基本需求是获取字符串的一部分,通常基于特定的起始和结束位置。在Java中,`String`类提供了多种截取方法,如`substring()`,但它默认是基于字符而非字节进行截取的。当涉及到字节时,我们需要...
`AscB`和`MidB`函数用于获取字符串中的字节,`And`操作符用于检查字节的最高位。如果连续的两个字节满足条件,说明它们构成一个中文字符,计数器加1。 在实际应用中,`CLen`函数对于处理包含中文字符的文本非常有用...
对于每个字符,我们使用getBytes()方法来获取其对应的字节长度,并将其累加到长度变量中。当长度变量小于或等于0时,我们便将当前字符添加到StringBuffer对象中。 在循环中,我们使用了if语句来判断当前字符的字节...
本文详细介绍了如何利用JavaScript来判断字符串的字节数,并根据字节长度进行字符串的截取操作。这包括了判断字符串中的字节数和字符数、限制输入长度、以及如何在JavaScript中动态地处理HTML页面元素的值。接下来,...
在TIA博途中,如果接收到的是以字节形式传输的ASCII码值,我们需要将其转换为对应的字符,进而组成字符串。例如,'A'的ASCII码值是65,'B'是66,以此类推。通过SCL(Structured Control Language,结构化控制语言)...
此方法用于获取指定长度的字符串,并特别考虑了中文字符的情况,因为中文字符通常占用两个字节的空间。 #### 参数说明: - `stringToSub`:需要截取的原始字符串。 - `length`:需要截取的长度(考虑到中文字符占两...
特别地,对于可能只截取到半个汉字的情况,jieQu方法会自动增加截取字节的长度,直到获取完整的字符为止。 最后,jieQu方法返回截取后的字符串,并在main方法中通过调用jieQu方法,传入特定的字符串和长度值,输出...
1. **获取字符串的字节数组**:使用`System.Text.Encoding.Unicode.GetBytes()`方法将原始字符串转换为字节数组。 2. **字节数组遍历**:遍历字节数组,根据Unicode编码规则确定每个字符所占的字节数。 3. **计算...
然后,获取原始字符串的字节长度`$str_len`。 接下来的条件判断确保了起始位置和目标长度的合理性,避免了超出字符串实际长度的访问。如果起始位置加上目标长度超过了字符串长度,那么将目标长度设置为字符串剩余的...
### ASP截取固定长度字符串知识点解析 在ASP(Active Server Pages)编程中,处理文本数据是常见的需求之一。尤其是在新闻发布系统、文章摘要生成等场景下,经常需要将一段较长的文字内容截取为指定长度的字符串,...
PHP提供了内置的`strlen()`函数,用于获取字符串的长度,即字符的数量。下面我们将深入探讨这个函数以及与字符串长度计算相关的知识点。 ### strlen()函数 `strlen()`是PHP的核心函数之一,它返回给定字符串的长度...
为了解决这个问题,我们可以编写自定义函数来准确地获取字符串的真实长度,并进行截取。 首先,让我们详细了解一下`getStrActualLen`函数。这个函数的目的是得到字符串的实际长度,即考虑了双字节字符的长度。它...
这里通过`Encoding.GetEncoding`获取GB2312编码对象,并将输入字符串转换为字节数组`byteArr`。这样做的目的是便于后续操作中对每个字节进行检查。 ##### 字节长度与字符长度的关系 接下来的循环用于计算实际可以...