【问题标题】:How to split String with quotes in content如何用内容中的引号分割字符串
【发布时间】:2012-10-19 17:09:21
【问题描述】:

我有一个如下所示的字符串:

"["xxx","yyy","zzz"]"

谁能给我一个提示,告诉我如何将它转换为如下所示的数组:

somestring[0]="xxx"
somestring[1]="yyy"
somestring[2]="zzz"

【问题讨论】:

  • 数组中数据的可接受值是多少,是否要维护字符串...(字符串内部)
  • @AmitD 感谢您的回复!但假设这个字符串是从 Web 服务动态获取的,它可以包含例如 7 个部分。
  • 我的问题更多的是你知道字符串将始终是 X 个字符或更长的字符或源数组中的其他一些参数吗?
  • @Jared 说真的,我今晚太累了,因为我不明白你的意思.. 这些字符串的大小可能不同,我无法控制它们,它在 http 中找到了我回应,我只需要处理它们..

标签: java arrays string split


【解决方案1】:

表达式

"[\"xxx\",\"yyy\",\"zzz\"]".replaceAll( "[\\\"\\[\\]]", "" ).split( "," );

将产生一个数组:

a[0] = "xxx";
a[1] = "yyy";
a[2] = "zzz";

希望……

[1 小时后...]

我确认:

public static void main(String[] args) {
    for( String part : "[\"xxx\",\"yyy\",\"zzz\"]".replaceAll( "[\\\"\\[\\]]", "" ).split( "," )) {
        System.out.println( part );
    }
}

输出:

xxx
yyy
zzz

【讨论】:

  • 在字符串本身包含括号或引号之前一直有效。
  • @Vulcan OP 澄清它只会包含字母。
【解决方案2】:

肮脏的黑客

String s1="[\"xxx\",\"yyy\",\"zzz\"]";
        String s2= s1.replaceAll("\"", "" );
        s2=s2.replace("[", "");
        s2=s2.replace("]", "");
        String ar[] =s2.split(",");

【讨论】:

  • 我实际使用过这个方案
  • 这可以在一行中完成(在声明s1之后)...string ar[] = s1.Replace("\"", "").Replace("[", "").Replace("]", "").Split(",");
【解决方案3】:

查看输入字符串模式,substring 也可以:

String inStr = "\"[\"xxx\",\"yyy\",\"zzz\"]\"";
String [] inArray = inStr.substring(0,inStr.length()-2).substring(2).split(",");
System.out.println(Arrays.toString(inArray));

将打印:

    ["xxx", "yyy", "zzz"]

如果您想删除引号 ("), 可以这样写:

String inStr = "\"[\"xxx\",\"yyy\",\"zzz\"]\"";
String [] inArray1 = inStr.substring(0,inStr1.length()-2)
                          .substring(2).replaceAll("\"","").split(",");
System.out.println(Arrays.toString(inArray1));

或者你可以这样做:

String inStr = "\"[\"xxx\",\"yyy\",\"zzz\"]\"";
String [] inArray = inStr.replaceAll( "[\\\"\\[\\]\"]", "").split( "," );
System.out.println(Arrays.toString(inArray0));

上面两个会打印:

    [xxx, yyy, zzz]

【讨论】:

  • 我会更详细地解释我的问题。我运行 HttpPost 导致得到的响应字符串看起来像我的问题中的字符串(同样是“[“xxx”,“yyy”,“zzz”]”)我想将这些值(xxx,yyy,..)移动到变量为了在代码隐藏中控制它们,响应可以包含更多的字符串然后 3
  • 应该没问题。 它适用于任意数量的字符串,例如"["xxx","yyy","zzz", "abc", "abcd", "mnopqr"]",只要你开头有"[,结尾有]"。如果您期待更多模式,请分享其中几个以更好地理解。
  • 不,你必须删除引号“
  • @Aubin:也使用该模式更新了答案。我认为在您之前的回答中,正则表达式不正确。我看到现在已经纠正了:)
猜你喜欢
  • 1970-01-01
  • 2011-03-26
  • 1970-01-01
  • 2013-08-24
  • 2016-02-01
  • 2021-06-12
  • 2016-01-07
  • 2011-06-25
  • 1970-01-01
相关资源
最近更新 更多