Java:将String String数组转换为Object

时间:2017-06-08 04:45:55

标签: java arrays string

我试图将String Array转换为Object。

Object string="[FIBER,CABLE]";
String[] strArray = (String[])string;

我得到了ClassCastException。

我可以通过斜线和逗号分割str

Object string="[FIBER,CABLE]";
String[] strArray = ((String)string).split("[,\\]\\[]");

for(int i=1;i<strArray.length;i++)
    System.out.println(strArray[i]);

我想知道&#34; 有没有更好的方法呢?&#34;

3 个答案:

答案 0 :(得分:1)

实际上,你目前拥有的是第一个阵列位置的空字符串。

我会这样做:

Object string = "[FIBER,CABLE]";

// cleaner to just cast it in a separate statement.
String s = (String) string;

// replace the "[" and "]" with "" and split on ","
String[] strArray = s.replaceAll("[\\[\\]]", "").split(",");

// from i = 0 and not i = 1
for (int i = 0; i < strArray.length; i++)
    System.out.println(strArray[i]);

<强>输出

FIBER
CABLE

答案 1 :(得分:1)

您应该在分割字符串之前删除前导[和尾随]

Object obj = "[FIBER,CABLE]";

String str = (String) obj;
if (! str.startsWith("[") || ! str.endsWith("]"))
    throw new IllegalArgumentException("Bad data: " + str);
String[] strArray = str.substring(1, str.length() - 1).split(",", -1);

for (String s : strArray)
    System.out.println(s);

输出

FIBER
CABLE

答案 2 :(得分:0)

这里正确的解决方法是重构数据库,这样就不会将数组存储在文本字段中,而是存储在表中的单独行中。在说这个时,我假设您无法访问插入数据库的进程,因此无法对其进行任何操作。

鉴于手头的问题,您的解决方案看起来很不错。