Quotes a value in CSV format converter. - Java File Path IO

Java examples for File Path IO:CSV File

Description

Quotes a value in CSV format converter.

Demo Code

/*******************************************************************************
 * Copyright (c) 2008 Actuate Corporation.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:/*from w  w w  .ja  v a 2  s.c  o m*/
 *  Actuate Corporation  - initial API and implementation
 *******************************************************************************/
//package com.java2s;

public class Main {
    public static final String QUOTE = "\"";

    /**
     * Quotes a value in CSV format converter. Here are the rules:
     * <ol><li>Fields with given separator must be delimited with double-quote
     * characters.</li>
     * <li>Fields that contain double quote characters must be
     * surrounded by double-quotes, and the embedded double-quotes must each be
     * represented by a pair of consecutive double quotes.</li>
     * <li>A field that contains embedded line-breaks must be surrounded by
     * double-quotes.</li>
     * <li>Fields with leading or trailing spaces must be delimited with
     * double-quote characters.</li>
     * <li>Null values are represented by empty strings without quotes</li>
     * 
     * @param value value to quote
     * @param sep CSV separator, to check whether the value contains it
     * @return the value quoted in CSV format
     */
    public static String quoteCSVValue(String value, String sep) {
        if (value == null) {
            return null;
        } else if (value.length() == 0) {
            return QUOTE + QUOTE;
        }

        // escape quotes
        value = value.replaceAll(QUOTE, QUOTE + QUOTE);

        boolean needQuote = false;
        needQuote = (value.indexOf(sep) != -1)
                || (value.indexOf(QUOTE) != -1)
                || (value.indexOf('\n') != -1) // line break
                || value.startsWith(" ") || value.endsWith(" ") //$NON-NLS-1$ //$NON-NLS-2$
                || value.startsWith("\t") || value.endsWith("\t"); //$NON-NLS-1$ //$NON-NLS-2$
        if (needQuote) {
            value = QUOTE + value + QUOTE;
        }

        return value;
    }
}

Related Tutorials