我希望使用“;”字符分隔一个字符串的不同部分,如果字符串中包含;,使用\;进行转义,如:
引用
“aaa;” “b;b” “ccc”
这两个字符串连接起来即为:
引用
aaa\;;b\;b;ccc
StringSpliter指定分隔符和转义符,可将这样的字符串分隔出来:
public class StringSpliter {
public static List<String> spliter(String content, char spliter, char escape) {
if (!StringUtils.hasText(content)) {
return Collections.EMPTY_LIST;
} else {
boolean hasPerEscape = false;
List<String> items = Lists.newArrayList();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < content.length(); i++) {
char c = content.charAt(i);
if (c == ' ' || c == '\t' || c == '\r' || c == '\n') {
if (hasPerEscape) {
sb.append(escape);
hasPerEscape = false;
}
continue;
}
if (c == escape) {
if (hasPerEscape) {
hasPerEscape = false;
sb.append(c);
} else {
hasPerEscape = true;
}
} else if (c == spliter) {
if (hasPerEscape) {
sb.append(c);
hasPerEscape = false;
} else {
if (sb.length() > 0) {
items.add(sb.toString());
sb.delete(0, sb.length());
}
}
} else {
sb.append(c);
}
}
if (sb.length() > 0) {
items.add(sb.toString());
}
return items;
}
}
}
单元测试:
public class StringSpliterTest {
@Test
public void testSplit(){
String str1 = "aa;bb;cc";
List<String> items = StringSpliter.spliter(str1, ';', '\\');
assertNotNull(items);
assertEquals(items.size(), 3);
assertEquals(items.get(0), "aa");
assertEquals(items.get(1),"bb");
assertEquals(items.get(2),"cc");
str1 = ";aa;bb;;;cc;";
items = StringSpliter.spliter(str1, ';', '\\');
assertNotNull(items);
assertEquals(items.size(), 3);
assertEquals(items.get(0), "aa");
assertEquals(items.get(1),"bb");
assertEquals(items.get(2),"cc");
str1 = "a\\;a;bb\\;;\\;cc";
items = StringSpliter.spliter(str1, ';', '\\');
assertNotNull(items);
assertEquals(items.size(), 3);
assertEquals(items.get(0), "a;a");
assertEquals(items.get(1),"bb;");
assertEquals(items.get(2),";cc");
str1 = "\\;;\\;";
items = StringSpliter.spliter(str1, ';', '\\');
assertNotNull(items);
assertEquals(items.size(), 2);
assertEquals(items.get(0), ";");
assertEquals(items.get(1),";");
str1 = ";;;;;";
items = StringSpliter.spliter(str1, ';', '\\');
assertNotNull(items);
assertEquals(items.size(), 0);
str1 = "\\ ; \\ ;";
items = StringSpliter.spliter(str1, ';', '\\');
assertNotNull(items);
assertEquals(items.size(), 2);
assertEquals(items.get(0), "\\");
assertEquals(items.get(1),"\\");
str1 = "aaa";
items = StringSpliter.spliter(str1, ';', '\\');
assertNotNull(items);
assertEquals(items.size(), 1);
assertEquals(items.get(0), "aaa");
}
}
分享到:
相关推荐
POWERBLUIDE11 将带有分隔符的字符串,转为SQL IN语句中需要的格式字符串;如:ABCD1234,ABCD5678 转换为 'ABCD1234','ABCD5678'然后可放直接放入IN语句中。
总之,MATLAB的`strsplit`函数是处理分隔符分隔的字符串的关键工具,它可以方便地将文本数据转化为可计算的数值矩阵。在进行字符串操作时,理解并熟练运用`strsplit`,以及相关的转换函数如`str2double`,是提升...
在IT行业中,处理文本数据是常见的...在实际工作中,我们还需要考虑一些复杂情况,比如处理嵌套分隔符、处理带有空白的分隔符、处理多种不同类型的分隔符等,这就需要灵活运用各种字符串处理函数和正则表达式等工具。
在IT编程领域,对字符串进行处理是常见的需求之一,其中按照特定分隔符来拆分字符串是一种非常实用且频繁使用的技巧。本篇文章将基于提供的代码片段深入探讨如何使用C++来实现这一功能,并且会详细介绍涉及到的相关...
用于字符处理的小工具,可以添加分隔符,删除分隔符,自定义分隔符符号,计算字符串长度
1)利用SUBSTITUTE将分隔符替换成空字符 2)利用LEN - LEN(SUBSTITUTE) 即可获取里面被替换掉了多少个分隔符 3)使用SUBSTITUTE将最后一个分隔...5)利用RIGHT或LEFT函数即可截取最后一个分隔符右边或左边的字符串内容
这是字符串类的一个成员,用于根据一个或多个分隔符将字符串分割成多个子字符串。默认情况下,`Split()`方法会返回所有不包含分隔符的部分,但在这个示例中,我们还需要考虑指定的长度限制。 下面是一个简单的代码...
本文将深入探讨如何在MATLAB中使用分隔符来分析和操作字符串,主要关注两个关键函数:`strsplit`和`tokenizedString`(在描述中未直接提及,但与字符串分隔相关)。我们将通过两个示例函数`get_tokens.m`和`get_cell...
在VB(Visual Basic)编程中,处理字符串是常见的任务之一,其中包括将一个长字符串拆分成多个子字符串。这个过程通常称为“字符串拆分”或“分隔字符...通过实践和理解这些内容,你将在VB字符串处理方面变得更加熟练。
将带分隔符的字符串 例如 '1,2,3,4,5,6,7,8,9,10' 转换成table 的列的函数
总结来说,MATLAB提供了一套强大的字符串处理工具,使得拆分分隔符分隔的字符串并将其转换为矩阵变得简单易行。通过熟练掌握这些功能,开发者能够有效地处理各种文本数据,从而在数据分析、算法开发等领域发挥重要...
在数据库管理和数据处理领域中,经常需要对存储在字段中的字符串进行处理,特别是当这些字符串包含了多个值时,通过分隔符将其分割成独立的部分是常见的需求之一。本篇文章将详细介绍如何利用SQL语言实现这一功能,...
POWERBLUIDE12.5 将带有分隔符的字符串,转为SQL IN语句中需要的格式字符串;如:ABCD1234,ABCD5678 转换为 'ABCD1234','ABCD5678'然后可放直接放入IN语句中。
这里的`str`是原始字符串,`delim`是分隔符字符串。`strtok`会返回一个指向被分割出的子字符串的指针。每次调用都会返回下一个子字符串,直到没有更多的子字符串可返回时,返回`NULL`。下面是一个示例: ```cpp #...
综上所述,理解并掌握如何使用JavaScript中的split()函数结合正则表达式进行多分隔符的字符串分割,对于进行有效和高效的数据处理来说,是一个非常重要的知识点。希望本文所述内容能够帮助开发者们在实际工作中解决...
本文将深入探讨四个主要概念:分隔符、注释、标识符以及字符串拼接,同时也会提及空格的使用。 首先,让我们来了解分隔符。与许多其他编程语言(如JAVA和PHP)不同,Golang不需要在每一行末尾添加英文分号(;)。这...
3. 处理边界情况:检查是否处理了分隔符出现在字符串开头或结尾的情况,以及连续的分隔符。 七、进一步学习 除了基础的“字符串到数组”函数,LabVIEW还提供了其他字符串处理函数,如“查找子字符串”、“替换子...
在编程领域,经常需要处理字符串,其中之一的常见任务就是检查字符串是否被特定的分隔符分隔。这个任务广泛应用于数据处理、文本分析以及日志解析等场景。本篇文章将详细探讨如何通过源码和工具来实现这个功能,特别...
了解如何使用空格或逗号作为分隔符分割字符串对于数据处理和分析至关重要,尤其是在处理用户输入、读取文件内容或解析日志文件时。例如,CSV(逗号分隔值)文件就是一种广泛使用的格式,其每一行都是由逗号分隔的...
这个功能允许我们将一个长字符串依据特定的分隔符切割成多个子字符串,从而方便我们进行数据解析、处理和分析。 在Python中,`split()`函数是用于字符串分割的主要方法。它接受一个可选参数(默认为空格)作为分隔...