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