вопрос относительно использования split () в Java - PullRequest
0 голосов
/ 01 августа 2011

Я пытаюсь разбить () строку текста и чисел из файла .txt. Мне нужно разделить различные части строки, чтобы я мог вставить его в таблицу базы данных. Вот пример строки:

051500000711000,051500000711000,equal;

У меня уже есть рабочий код для этой строки:

String delimiter = (",|;");
temp = strLine.split(delimiter);

но бывают случаи, когда строка выборки будет выглядеть так:

052000000711000,,,

Видите пропущенные значения? Они отсутствуют, потому что другая программа, которая генерирует эту строку, имеет нулевые значения; вот почему он возвращал только запятые.

Вопрос в том, что мне делать с моим разделителем, чтобы он читать запятые и возвращать их в мой массив split () как ноль.

Ответы [ 5 ]

8 голосов
/ 01 августа 2011

Проблема не в регулярном выражении разделителя. Используйте String.split(regex, limit) с пределом -1. Предел по умолчанию равен нулю, который обрезает завершающие нули из массива String, возвращаемого разделителем.

Прочитайте связанный Javadoc для подробностей.

1 голос
/ 01 августа 2011

Просмотр Apache Commons 2.5 StringUtils ' splitPreserveAllTokens

0 голосов
/ 01 августа 2011

Я думаю, вы хотите это регулярное выражение:

String delimiter = ",";

Используйте вот так:

temp = strLine.replace(";", "").split(delimiter);
0 голосов
/ 01 августа 2011

На самом деле, это уже должно работать в значительной степени.

Если промежуточное значение в списке равно "null" ... тогда вы получите пустую строку ... которую вы можете просто TREATкак "ноль".

Вот пример:

import java.io. *;

class X
{
  public static void main (String[] args) throws IOException
  {
    // Prompt user to enter something
    String delimiter = ",|;";
    String sLine = "051500000711000,,051500000711000,A,,";
    String[] sOut = sLine.split (delimiter);
    for (int i=0; i < sOut.length; i++)
     System.out.println ("sOut[]=" + sOut[i]);
  }
}

> sOut[]=051500000711000 
> sOut[]= 
> sOut[]=051500000711000 
> sOut[]=A
0 голосов
/ 01 августа 2011

Не используйте его.Получите guava и используйте Splitter.on(separator).split(string), который хорошо решает эту и другие проблемы.

...