当前位置: 首页 > 面试题库 >

使用String.split时转义逗号

柴华灿
2023-03-14
问题内容

我正在尝试执行一些超级简单的o日志文件解析,所以我正在使用如下String.split方法:

String [] parts = input.split(",");

并非常适合以下输入:

a,b,c

要么

type=simple, output=Hello, repeat=true

只是说些什么。

我该如何转义逗号,使其与中间逗号不匹配?

例如,如果我要在其中一部分中加入逗号:

type=simple, output=Hello, world, repeate=true

我在想类似的东西:

type=simple, output=Hello\, world, repeate=true

但是我不知道如何创建拆分来避免匹配逗号。

我试过了:

String [] parts = input.split("[^\,],");

但是,这是行不通的。


问题答案:

您可以使用否定的外观来解决它。

String[] parts = str.split("(?<!\\\\), ");

基本上说,在 _", " 没有反斜杠的情况下_拆分每个。

String str = "type=simple, output=Hello\\, world, repeate=true";
String[] parts = str.split("(?<!\\\\), ");
for (String s : parts)
    System.out.println(s);

输出:

type=simple
output=Hello\, world
repeate=true

(ideone.com链接)

如果您碰巧被非转义的逗号分隔值所卡住,则可以执行以下(类似)操作:

String[] parts = str.split(", (?=\\w+=)");

上面说的每个 单词 都分开, ", " 后面跟一些单词字符和一个=

(ideone.com链接)



 类似资料:
  • 我正在尝试使用python将csv读取到rdd(SPARK)。我遇到的问题是使用带有逗号的split函数作为分隔符时。只要每列中没有逗号,这就可以正常工作。如果有逗号,则逗号会将每一列拆分为多个列。 e、 g。 empid,emp title,emp desc,college 123,developer,developer的角色是使用C、C等语言开发软件,college1 在上面的示例中,emp

  • 问题内容: 我正在解析一个数据集,该数据集令人讨厌地决定以逗号分隔TSV(PharmaGKB途径,我在看着你)中的项目,但是在每个逻辑元素中都允许使用逗号。 基本上,逗号后跟空格表示没有定界,而逗号后跟字符表示新元素。 “这是一个,一个,两个,三个元素” 应该: 这是一个元素 两个要素 三要素 我有regex ,它可以很好地拆分, 但是 每次拆分后都会删除第一个字符。 这是一个元素 元素 三元素

  • 问题内容: 我得到了以下简单代码: 并且在命中时为null (引发null指针异常)。 我的问题是,即使我将其设置为在每个ip的.s上进行拆分,为什么ipArray仍为null? 问题答案: 使用,您的问题将得到解决。问题是String#split接收到一个正则表达式,点(。)符号在正则表达式中是一个特殊字符,因此您需要对其进行转义以将其解释为纯点,并且反斜杠也是转义字符在Java中,您也必须对其

  • 问题内容: 我试图解析一个文件,该文件的每一行都用管道定界值。当我没有在split方法中转义管道定界符时,它不能正常工作,但是在我如下转义管道后,它却可以正常工作。 有人可以解释为什么该方法需要转义管道字符吗? 问题答案: 需要一个正则表达式参数。未转义的被解析为正则表达式,表示“空字符串或空字符串”,这不是您的意思。

  • 问题内容: 我正在尝试为我的PHP应用程序构建一个简单的部署脚本。我知道有几种工具可以完成这项工作(Capistrano,Phing等),但是对于我的简单部署例程而言,它们似乎需要大量工作。 我使用sshpass避免一遍又一遍地输入密码。但是,在上传压缩的安装程序之后,我需要将ssh插入服务器并运行一些命令。sed之一。因此,引号破坏了我的脚本。就像这样: 如您所见,我使用双引号启动SSH语句,但

  • 问题内容: 我正在编写一个Java应用程序以将数据从Oracle导出到CSV文件 不幸的是,数据的内容可能非常棘手。分隔符仍然是逗号,但连续的一些数据可能是这样的: 因此,这是该列上的字符串之一: 我说:“我是5‘10”。 别开玩笑了,我需要在Java生成的CSV文件中的excel或开放式办公室中显示上述注释,而又不能妥协,并且当然不能弄乱其他常规的转义符情况(即,常规的双引号和元组中的常规逗号)