Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有特殊字符的字符串解析_Java_String_Parsing - Fatal编程技术网

Java 具有特殊字符的字符串解析

Java 具有特殊字符的字符串解析,java,string,parsing,Java,String,Parsing,我有这样一个字符串: String buf = "[[[name11,name12]][[name21,name22]][[name31,name32]]]"; 如何检索所有名称 当我从数据库中检索数据时,我以这种形式接收数据 寻找Java解决方案 谢谢,您可以使用Java中的类来解析数据。这个技巧应该可以做到: String csv = buf.replace("[[[","").replace("]]]","").replace("]][[",","); String[] names =

我有这样一个字符串:

String buf = "[[[name11,name12]][[name21,name22]][[name31,name32]]]";
如何检索所有名称

当我从数据库中检索数据时,我以这种形式接收数据

寻找Java解决方案


谢谢,您可以使用Java中的类来解析数据。

这个技巧应该可以做到:

String csv = buf.replace("[[[","").replace("]]]","").replace("]][[",",");
String[] names = csv.split(",");

它删除了前括号和后括号,并用逗号替换内括号。现在,您可以将输入拆分为
,并拥有一个仅包含名称的数组。

您总是有成对的名称吗?是否可以有[[name2,]]


如果名字总是成对出现,那么安德烈亚斯的回答就是一个简单的直截了当的回答。如果其中一个名称可能丢失,那么您需要在前面添加几个replace()调用来查找这些名称,并在其中放入伪值。特别是“[,”和“[dummyFirst”,以及“,]”和“dummyLast]”。然后,您必须根据适合您的上下文的任何规则来处理这些伪值。

您为什么需要解析这样的字符串?它看起来像是多维数组中的某种
toString()
方法,在这种情况下,我建议使用它,而不是它的字符串表示形式。您可能还想提到您使用的是哪种编程语言。我看到您补充说它来自数据库。好吧,我不建议使用hacky
String.split(…)
方法(我相信有人会在几分钟内…),但我建议将该信息正确地存储在数据库中,而不是通过黑客方式绕过它。假设有人建议一个
拆分(…)
解决方案,你认为当你的名字中有一个包含
[
]
文字时会发生什么?这个名字不包含任何特殊字符,只是一个字母或数字。因此,即使有人使用String.split(“\\[”)或其他东西,也没关系。好吧,好吧。然后看看
Scanner
类或使用
String.split(…)
.String csv=buf.replace(“[”,”).replace(“],”“)//simpler?String[]names=buf.split(“,[\]+”);//更简单,但不确定如何逃逸?@Tom,不,
buf.replace(“[”,”).replace(“]”,“)
不起作用:它将
name12
name21
粘在一起(以及其他名称)。@Bart:true;//应该想到这一点,对不起