【问题标题】:java how to convert string to String[] and put in Specific string variabeljava如何将字符串转换为String []并放入特定的字符串变量
【发布时间】:2016-05-15 15:27:54
【问题描述】:

我有一个包含许多值的字符串,我想获取所有的值并将其放入新的字符串变量中。完成后我会把它放到 String[]

在导入库中:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.apache.log4j.Logger;

import com.opensymphony.xwork2.ActionContext;

import oracle.jdbc.OracleCallableStatement;
import oracle.sql.ArrayDescriptor;
import oracle.sql.ARRAY;
import oracle.jdbc.OracleTypes;
import java.sql.*;

这是我的代码:

private List<monitoringPpobModel> lisPpob= new ArrayList<monitoringPpobModel>();


con = dbEngine.getConnection();
OracleCallableStatement css = null;
for(int i=0;i<lisPpob.size(); i++)
        {   
           System.out.println("param 1 = "+lisPpob.get(i).getLBRAP2T());
           System.out.println("param 2 = "+lisPpob.get(i).getRPAP2T());

           ArrayDescriptor oracleVarchar2Collection = ArrayDescriptor.createDescriptor("OPHARTDE.ARAY",con);

           List<String> lis= Arrays.asList(lisPpob.get(i).getLBRAP2T());
           List<String> lis2= Arrays.asList(lisPpob.get(i).getRPAP2T());

           String ket1 = lis.stream().map(Object::toString).collect(Collectors.joining(","));
           String ket2 = lis2.stream().map(Object::toString).collect(Collectors.joining(","));

           //manual declare - this work
           String aa = "1";
           String bb = "3";
           String cc = "5";
           String dd = "7";
           String ee = "8";

           String[] lbr = {aa,bb,cc,dd,ee};
//         String[] lbr = {ket1};

           //auto declare - this not work 
           String[] rp = {ket2};

           ARRAY ora_lbr = new ARRAY (oracleVarchar2Collection, con,lbr);
           ARRAY ora_rp = new ARRAY (oracleVarchar2Collection, con,rp);

           System.out.println("value 1= "+ lbr.length +" = "+ lbr[i]);
           System.out.println("value 2= "+ rp.length +" = "+ rp[i]);

           css = (OracleCallableStatement) con.prepareCall("{call OPHARTDE.PPOBUPDATE2(?,?)}");
           css.setArray(1, ora_lbr);
           css.setArray(2, ora_rp);
           css.execute();
}

println 的结果是:

param 1 = 75764674653, 5434, 354, 434, 5435
param 2 = 53, 535, 25, 53, 434
value 1= 5 = 1
value 2= 1 = 53, 535, 25, 53, 434

我想要的是:

String[] rp = {ket2};

就像

中的值
String[] lbr = {aa,bb,cc,dd,ee};

感谢您的帮助。这对我来说太难了。请帮忙

【问题讨论】:

  • 请提供任何帮助。谢谢
  • 我不知道你的问题是什么。准确。
  • 获取字符串的每个值并放入字符串[]
  • 不要将更多信息放入 cmets。请更新您的问题。
  • 您需要提供更多信息。您正在使用不是来自标准 Java 库的东西 - 例如ARRAY 似乎是一堂课。另外,ArrayDescriptor,我怀疑它来自 Oracle 的 JDBC,但你没有在标签中提到你的问题是关于 Oracle 数据库的。而且您正在使用我们不知道其类型的数据(listPob 是什么?)。请edit您的问题并加以改进。

标签: java string list oracle11g


【解决方案1】:

这会将字符串对象中的每个字符放入字符串数组中。

String[] rp = new String[ket2.length()]; for(int i = 0; i < rp.length(); i++) { rp[j] = "" + ket2.charAt(i); }

告诉我这是否有帮助!

【讨论】:

  • 对不起,我刚打开这个网站。实际上,经过多次尝试,我的解决方案很好地解决了它。但我必须试试你的代码以示尊重。
  • 我正在尝试您的代码,但给了我错误。错误日志是“java.sql.SQLException: ORA-01722: invalid number”。
  • 这是我解决的代码。我将此添加到我的 lis ' List lis2= Arrays.asList(lisPpob.get(i).getRPAP2T().split("\\s*,\\s*")); ' 当我想得到 lis 的所有值时,我做了什么' String[] myentries2 = lis2.toArray(new String[lis2.size()]); '。谢谢
  • 我不知道为什么会发生错误。该代码对我有用。很高兴听到您成功了。
猜你喜欢
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 2020-09-03
  • 1970-01-01
  • 2013-06-21
  • 2020-11-22
相关资源
最近更新 更多