Чтение содержимого texfile, разделенного разделителями

«Джон», «100,00», «200,00»

Как прочитать содержимое текстового файла, а затем вывести строку в кавычках.

Результат должен быть Ион 100,00 200,00

String CUSTOMER, CURRENT, NEW;
    Scanner sc = new Scanner(str);
    sc.useDelimiter(",");
    while(sc.hasNext()){
        CUSTOMER = sc.next();
        CURRENT = sc.next();
        NEW = sc.next();
           System.out.println("" + CUSTOMER + " " + CURRENT + 
             " " + NEW);  
          }
          sc.close();

Как отделить токены от котировок. вывод для приведенного выше кода, который я получаю, это «Джон» «100.00» «200.00»

Вы забыли опубликовать код того, что уже пробовали.

JohEker 22.06.2018 22:48

вы пробовали что-нибудь до сих пор ?? Поделись с нами.

Madushan Perera 22.06.2018 22:48

Это похоже на данные CSV, поэтому используйте парсер CSV !!!!

Andreas 22.06.2018 23:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
3
53
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете получить требуемый результат следующим образом:

public static void main(String[] args) {
    Pattern p = Pattern.compile(".*?\\\"(.*?)\\\".*?");
    Matcher m = p.matcher("\"John\",\"100.00\",\"200.00\"");

    while (m.find()) {
        System.out.println(m.group(1));
    }
}

Объяснять

.*?   - anything
\\\" - quote (escaped)
(.*?) - anything (captured)
\\\" - another quote
.*?  - anything

Выход

John
100.00
200.00

Я получаю из файла, так как заставить его работать для ввода из файла

Rishu Majumdar 22.06.2018 23:21

Вы можете получить представление по это

Madushan Perera 22.06.2018 23:25

https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

Сканер также может использовать другие разделители, кроме пробелов. Этот пример считывает несколько элементов из строки:

 String input = "1 fish 2 fish red fish blue fish";
 Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");

Таким образом, вы можете избежать первой и последней кавычек с помощью substring (1, len-1) и useDelimiter (\ ", \") с разделителем из трех символов во внутренней части.

    String str = "\"John\",\"100.00\",\"200.00\"";
    System.out.println(str);
    String CUSTOMER, CURRENT, NEW;
    Scanner sc = new Scanner(
        str.substring(1,str.length()-1)  // <--- here substring 
    );
    sc.useDelimiter("\",\""); // <---- here your split: <token>","<token>

    while(sc.hasNext()){
        CUSTOMER = sc.next();
        CURRENT = sc.next();
        NEW = sc.next();
        System.out.println("" + CUSTOMER + " " + CURRENT + " " + NEW);  
    }
    sc.close();
Ответ принят как подходящий

Вот еще один способ выполнить задачу:

String line, customerName, currentVal, newVal;
try (Scanner sc = new Scanner(new File("salesrep.txt"))) {
    while (sc.hasNextLine()) {
        line = sc.nextLine().replace("\"", "");
        //skip blank lines (if any)
        if (line.equals("")) {
            continue;
        }
        String[] lineData = line.split(",");
        customerName = lineData[0];
        currentVal = lineData[1]; // or:  double currentVal = Double.parseDouble(lineData[1]);
        newVal = lineData[2];     // or:  double newVal = Double.parseDouble(lineData[2]);
        System.out.println("" + customerName + " " + currentVal + " " + newVal);
    }
}
catch (FileNotFoundException ex) {
    ex.printStackTrace();
}

Другие вопросы по теме