于用
Java
来截取指定长度的字符串,我在网上看到很多帖子和方法,大都是说用
substring()
,但是如果考虑到全角半角的话,这是怎么也达不到期望值的。因为之前自己也用到过,所以把自己整理好的一些东西拿出来,希望能和大家分享下。如果还有更好更简洁的方法,望大侠们指点一二。
注:所有测试都是基于该值已通过必须输入的检查。
1.
subByStrLenth()
在不考虑全角的情况下,即假定该字符串都是半角的。
2.
subByFullWidth()
如果已确保该值都是由全角字符,即字符都是全角且指定长度是大于
0
的偶数的情况下。
3.
subByStrByte()
考虑全角半角的截取,且舍掉半个汉字后,长度不足的情况下是否要在右边补空格。
// 按指定的长度来截取字符串,不管全角半角,一个字符一个长度。
public static String subByStrLength(String value, int length) {
return value.length() > length ? new String(value.substring(0, length)) : value;
}
// 按指定的长度来截取字符串,前提是字符串是全角的,指定长度是大于0的偶数。
public static String subByFullWidth(String value, int length) {
return value.getBytes().length > length ? new String(value.getBytes(), 0, length) : value;
}
// 按指定的长度下,考虑字符的全角半角,且当舍掉最后半个汉字后,长度不足的情况下是否要在右边补空格。
public static String subByStrByte(String value, int length, boolean paddingSpace) {
String valueTemp = "";
// 指定的长度下,考虑字符的全角半角,最后的汉字。
if (value.getBytes().length > length) {
for (char c : value.toCharArray()) {
if (valueTemp.getBytes().length <= length) {
valueTemp += c;
if (valueTemp.getBytes().length == length) {
break;
} else if (valueTemp.getBytes().length > length) {
char[] charTemp = valueTemp.toCharArray();
valueTemp = "";
for (int i = 0; i < charTemp.length - 1; i++) {
valueTemp += charTemp[i];
}
break;
}
}
}
value = valueTemp;
}
// 指定的长度下,长度不足的情况是否要在右边补空格。
if (paddingSpace) {
StringBuffer valueBuffer = new StringBuffer(value);
for (int i = 0; i < length - value.getBytes().length; i++) {
valueBuffer.append(" ");
}
return valueBuffer.toString();
}
return value;
}
// 字符串的截取测试
public static void main(String[] args) {
String str1 = "字符串的截取";
String str2 = "字符串的截取test";
System.out.println(subByStrByte(str2, 7, true));
System.out.println(subByStrByte(str2, 7, false));
System.out.println(subByStrLength(str2, 7));
System.out.println(subByFullWidth(str1, 6));
}
第一个输出结果是带空格的字符串“字符串
”。
运行结果:
字符串
字符串
字符串的截取
t
字符串
分享到:
相关推荐
根据提供的文件信息,本文将详细解释如何在前后端开发中实现对字符串进行精确截取,同时考虑到全角和半角字符的区别。这个问题在处理多语言环境下的文本时尤为重要,因为不同语言中的字符宽度可能有所不同,这直接...
在实际应用中,我们可能还需要考虑一些边缘情况,例如当截取的长度超过了字符串的实际长度,这时通常会返回整个字符串或者空字符串,具体取决于编程语言的实现。 标签“字符串 截取”提示我们关注的重点在于理解和...
总的来说,按照字节长度截取字符串需要考虑字符编码的影响,通过`Encoding`类处理字符串的字节表示,并结合正则表达式进行精确截取。在实际应用中,确保对字符串编码的理解和处理方式的正确性至关重要,以避免可能...
### 对全角半角字符串的处理 在计算机编程与数据处理领域中,全角和半角字符的区别及其转换是一项常见的需求。特别是在东亚语言环境中(如中文、日文、韩文等),这种转换对于文本处理至关重要。 #### 全角与半角...
Java 字符串截取函数 ...本例中,我们实现了一个 Java 字符串截取函数,该函数可以截取指定字节的字符串,并保证汉字不被截半个。该函数使用 `substring` 方法来实现字符串截取,并且可以应用于各种字符串处理场景。
本文实例讲述了C#区分中英文按照指定长度截取字符串的方法。分享给大家供大家参考。具体如下: 这段C#代码用于按照指定的长度截取字符串,一个中文字符算2个字符,按照这个方法截取的字符串基本可以保持显示长度一致...
本篇文章将详细探讨“按byte截取字符串”这一技术点,并通过两个Java文件——SliceByByteTest.java和SliceByByte.java的实例来阐述其实现方法。 首先,我们需要理解字符串在计算机内存中的存储方式。在Java中,字符...
oracle,按特定字符,截取字符串,直接出结果 oracle,按特定字符,截取字符串,直接出结果oracle,按特定字符,截取字符串,直接出结果
在JavaServer Pages (JSP) 中,字符串截取是一项常见的任务,特别是在处理用户输入或显示数据时。JSP 提供了内置对象和脚本元素来处理字符串操作,其中包括字符串截取。下面我们将深入探讨如何在 JSP 页面中进行字符...
这个函数`SafeSubstring`接收字符串S、起始字节位置StartByte和截取的字节数LenBytes,返回一个从指定字节位置开始,长度为LenBytes字节的新字符串。注意,这个函数假设输入的都是有效的字节位置,没有进行边界检查...
如果单纯按字符长度截取,可能会导致截取到半字符,从而破坏字符串的读取。因此,按照字节长度截取可以确保正确处理多字节字符。 C#中的`string`类提供了多种截取方法,如`Substring()`,但这些方法默认是基于...
字符串是由字符组成的序列,而“字符串按照指定的字节数来截取”这个话题,就是指如何在字符串中提取固定字节数的部分。在不同的编程语言中,都有相应的函数或方法来实现这一功能。 在Python中,可以使用内置的`...
在进行Java编程时,我们经常会遇到需要按字节截取字符串的情况,尤其是在数据传输、网络通信以及对数据进行存储处理的时候。由于计算机内部存储和处理的都是二进制数据,对于非英文字符,在不同的编码(如UTF-8、GBK...
最直接的方式是使用`Substring`方法来截取指定长度的字符串。这种方法适用于纯英文或单字节字符组成的字符串。 ```csharp public static string CutString(string inputString, int len) { if (inputString.Length...
在Java编程中,有时我们需要对字符串进行精确截取,特别是在处理中文字符时,由于中文字符在内存中通常以双字节形式存储,因此简单的按照字符数截取可能会导致汉字被分割,影响显示效果。这个问题在文档标题“Java...
在Java编程语言中,处理带有汉字的字符串时,由于汉字占据多个字节,按照字节进行截取可能会导致汉字被不完整地分割,从而产生乱码。为了解决这个问题,我们需要理解Unicode编码以及如何在Java中正确处理多字节字符...
根据提供的文件信息,本文将详细解释Java中截取字符串的各种方法及其使用场景,并结合部分示例代码进行说明。 ### Java中截取字符串的方法 在Java编程语言中,字符串的处理是一项非常重要的技能,特别是在开发中...
在编程领域,字符串操作是一项基础且重要的任务,而“截取字符串”是其中的一个关键功能。这个小demo展示了如何在不同的编程环境中实现字符串截取,同时也涉及到字符串的空格处理。接下来,我们将深入探讨这两个主题...
这里我们探讨的主题是如何按显示长度来截取字符串,这在处理多语言文本时尤其重要,因为不同字符集(如UTF-8)中的字符长度可能不一致。在UTF-8编码下,一个英文字符通常占用1个字节,而一个汉字则可能占用1到3个...
本文将详细解析两种常用的C++ `std::string`截取字符串的方法:`find`和`find_last_of`,以及如何结合使用它们来满足各种字符串处理需求。 1. `find`方法: `find`方法用于在字符串中查找指定子字符串`strSub`的第...