2013-12-12 3 views
1

Я использую этот метод в этой строке:ошибка времени выполнения в .split («|»)

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

с входом, как «13 | Il синьор делием Анелли» и InstEd возврата:

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(); 
+3

Используйте 'раскол ("\\ |")'. –

+1

'' | "' является специальным регулярным выражением. Если вы действительно хотите разделить на '' | '' 'use' .split (" \\ | ");' –

ответ

5

Функция String.split принимает регулярное выражение, попробуйте использовать это:

split("\\|") 

это сделает его разделить на буквальное |

+1

Не уверен, ** обязательно **: ['String # split (String regex)' ] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split (java.lang.String)): * Параметры: regex - регулярное выражение с разделителями *. –

+0

Я действительно поехал и проверял, я просто забыл изменить то, что я написал ... – M21B8

+0

Я также имею в виду, что лучше обратиться к официальной документации, чтобы укрепить содержание вашего ответа. –

2

Вообще, если вы хотите разделить на фиксированной строкой (вместо регулярных выражений) использовать quote:

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

Попробуйте split("\\|");

ИЛИ Вы можете использовать

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

java.lang.String.split расщепляется на регулярной выражения.

Двенадцать символы имеют специальное значение в регулярных выражениях: обратный слэш \, каретку ^, знак доллара $, период или точка ., вертикальная черта или трубы символ |, знак вопроса ?, звездочку или звезды * , знак плюса +, открывающая скобка (, закрывающая скобка ), квадратная скобка [ и открывающая фигурная скобка {.

Эти специальные символы часто называют "metacharacters".

Для More

Смежные вопросы