.split("|")中的运行时错误

gia*_*otb 1 java arrays string split runtime-error

我在那行使用那个方法:

f.getCmbAttori().getSelectedItem().toString().split("|")
Run Code Online (Sandbox Code Playgroud)

输入如"13 | Il Signore degli Anelli"并输入:

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

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

    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"
Run Code Online (Sandbox Code Playgroud)

怎么可能呢?我是以错误的方式打算这种方法吗?这里是我使用的一段代码:

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();
Run Code Online (Sandbox Code Playgroud)

M21*_*1B8 5

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

split("\\|")
Run Code Online (Sandbox Code Playgroud)

这将使它在文字上分开