我试图将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;
答案 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)
这里正确的解决方法是重构数据库,这样就不会将数组存储在文本字段中,而是存储在表中的单独行中。在说这个时,我假设您无法访问插入数据库的进程,因此无法对其进行任何操作。
鉴于手头的问题,您的解决方案看起来很不错。