Package com.opencsv

Class RFC4180Parser

All Implemented Interfaces:
ICSVParser

public class RFC4180Parser extends AbstractCSVParser
This Parser is meant to parse according to the RFC4180 specification.

Since it shares the same interface with the CSVParser there are methods here that will do nothing. For example the RFC4180 specification does not have an concept of an escape character so the getEscape method will return char 0. The methods that are not supported are noted in the Javadocs.

Another departure from the CSVParser is that there is only two constructors and only one is available publicly. The intent is that if you want to create anything other than a default RFC4180Parser you should use the CSVParserBuilder. This way the code will not become cluttered with constructors as the CSVParser did.

You can view the RFC4180 specification at the Internet Engineering Task Force (IETF) website.

Examples:

ICSVParser parser = new RFC4180Parser();

or

CSVParserBuilder builder = new CSVParserBuilder() ICSVParser parser = builder.withParserType(ParserType.RFC4180Parser).build()
Since:
3.9
  • Constructor Details

    • RFC4180Parser

      public RFC4180Parser()
      Default constructor for the RFC4180Parser. Uses values from the ICSVParser.
    • RFC4180Parser

      RFC4180Parser(char quoteChar, char separator, CSVReaderNullFieldIndicator nullFieldIndicator)
      Constructor used by the CSVParserBuilder.
      Parameters:
      quoteChar - The character to use for quoted elements
      separator - The delimiter to use for separating entries
      nullFieldIndicator - Indicate what should be considered null
  • Method Details

    • convertToCsvValue

      protected String convertToCsvValue(String value, boolean applyQuotesToAll)
      Description copied from class: AbstractCSVParser
      Used when reverse parsing an array of strings to a single string. Handles the application of quotes around the string and handling any quotes within the string.
      Specified by:
      convertToCsvValue in class AbstractCSVParser
      Parameters:
      value - String to be converted
      applyQuotesToAll - All values should be surrounded with quotes
      Returns:
      String that will go into the CSV string
    • parseLine

      protected String[] parseLine(String nextLine, boolean multi)
      Parses an incoming String and returns an array of elements.
      Specified by:
      parseLine in class AbstractCSVParser
      Parameters:
      nextLine - The string to parse
      multi - Does it take multiple lines to form a single record?
      Returns:
      The list of elements, or null if nextLine is null
    • tokenizeStringIntoArray

      private String[] tokenizeStringIntoArray(String nextLine)
    • handleEmptySeparators

      private String[] handleEmptySeparators(String[] strings)
    • splitWhileNotInQuotes

      private String[] splitWhileNotInQuotes(String nextLine, boolean multi)
    • lastElementStartedWithQuoteButDidNotEndInOne

      private boolean lastElementStartedWithQuoteButDidNotEndInOne(List<String> elements)
    • hasOddQuotes

      private boolean hasOddQuotes(String lastElement)
    • hasOnlyOneQuote

      private boolean hasOnlyOneQuote(String lastElement)
    • startsButDoesNotEndWithQuote

      private boolean startsButDoesNotEndWithQuote(String lastElement)
    • findEndOfFieldFromPosition

      private int findEndOfFieldFromPosition(String nextLine, int currentPosition)
    • haveNotFoundLastQuote

      private boolean haveNotFoundLastQuote(String nextLine, int nextQuote)
    • handleQuotes

      private String handleQuotes(String element)
    • setErrorLocale

      public void setErrorLocale(Locale errorLocale)
      Description copied from interface: ICSVParser
      Sets the locale for all error messages.
      Parameters:
      errorLocale - Locale for error messages. If null, the default locale is used.