【问题标题】:Run-time error in .split("|").split("|") 中的运行时错误
【发布时间】:2013-12-12 17:00:39
【问题描述】:

我在该行中使用该方法:

f.getCmbAttori().getSelectedItem().toString().split("|")

输入类似“13|Il Signore degli Anelli”并返回:

f.getCmbAttori().getSelectedItem().toString().split("|")[0] = "13"
f.getCmbAttori().getSelectedItem().toString().split("|")[1] = "Il Signore degli Anelli"

它返回一个数组,其中每个字符都是单独的,如下所示:

    f.getCmbAttori().getSelectedItem().toString().split("|")[0] = ""
    f.getCmbAttori().getSelectedItem().toString().split("|")[1] = "1"
    f.getCmbAttori().getSelectedItem().toString().split("|")[2] = "3"
    f.getCmbAttori().getSelectedItem().toString().split("|")[3] = "|"
    f.getCmbAttori().getSelectedItem().toString().split("|")[4] = "I"
    f.getCmbAttori().getSelectedItem().toString().split("|")[5] = "l"
[...]

    f.getCmbAttori().getSelectedItem().toString().split("|")[25] = "l"
    f.getCmbAttori().getSelectedItem().toString().split("|")[26] = "i"

这怎么可能?我以错误的方式编写此方法?这是我使用的一段代码:

PreparedStatement stmSql = null;
                 int risultato = 0;                  
                 stmSql = f.conn.prepareStatement("insert into recita (CodAttore, CodFilm) values (?, ?)");
                 stmSql.setInt(1, Integer.parseInt(f.getCmbAttori().getSelectedItem().toString().split("|")[1]));
                 stmSql.setInt(2, Integer.parseInt(f.getCmbFilmRecita().getSelectedItem().toString().split("|")[1]));
                 risultato = stmSql.executeUpdate();

【问题讨论】:

  • "|" 是一个特殊的正则表达式字符。如果您真的想在"|" 上拆分,请使用.split("\\|");

标签: java arrays string split runtime-error


【解决方案1】:

String.split 函数采用正则表达式,请尝试使用:

split("\\|")

这将使它在文字上拆分 |

【讨论】:

  • 不太确定,确定String#split(String regex)参数:regex - 分隔正则表达式
  • 我的意思是最好参考官方文档来加强你回答的内容。
【解决方案2】:

通常如果您想按固定字符串(而不是正则表达式)进行拆分,请使用 quote:

.split(Pattern.quote("|"))

【讨论】:

    【解决方案3】:

    试试split("\\|");

    或者你可以使用

    split(Pattern.quote("|"));
    

    java.lang.String.split 拆分正则表达式。

    十二个字符在正则表达式中有特殊含义:反斜杠\、插入符号^、美元符号$、句点或点.、竖线或竖线符号|、问号?、星号或星号*、加号+、左括号(、右括号)、左方括号[、左大括号@987654336 @。

    这些特殊字符通常称为"metacharacters"

    对于More

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多