Put quotes around the given String if necessary in Java

Description

The following code shows how to put quotes around the given String if necessary.

Example


//from   w ww  .  java 2 s.co m
public class Main {
  private static final String SINGLE_QUOTE = "\'";
  private static final String DOUBLE_QUOTE = "\"";

  public static void main(String[] argv) {
    System.out.println(quoteArgument("this is a test from java2s.com"));
  }

  /**
   * Put quotes around the given String if necessary.
   * 
   * If the argument doesn't include spaces or quotes, return it as is. If it
   * contains double quotes, use single quotes - else surround the argument by
   * double quotes.
   * 
   * 
   * @param argument
   *            the argument to be quoted
   * @return the quoted argument
   * @throws IllegalArgumentException
   *             If argument contains both types of quotes
   */
  public static String quoteArgument(final String argument) {

    String cleanedArgument = argument.trim();

    while (cleanedArgument.startsWith(SINGLE_QUOTE)
        || cleanedArgument.startsWith(DOUBLE_QUOTE)) {
      cleanedArgument = cleanedArgument.substring(1);
    }
    while (cleanedArgument.endsWith(SINGLE_QUOTE)
        || cleanedArgument.endsWith(DOUBLE_QUOTE)) {
      cleanedArgument = cleanedArgument.substring(0,
          cleanedArgument.length() - 1);
    }

    final StringBuffer buf = new StringBuffer();
    if (cleanedArgument.indexOf(DOUBLE_QUOTE) > -1) {
      if (cleanedArgument.indexOf(SINGLE_QUOTE) > -1) {
        throw new IllegalArgumentException(
            "Can't handle single and double quotes in same argument");
      } else {
        return buf.append(SINGLE_QUOTE).append(cleanedArgument)
            .append(SINGLE_QUOTE).toString();
      }
    } else if (cleanedArgument.indexOf(SINGLE_QUOTE) > -1
        || cleanedArgument.indexOf(" ") > -1) {
      return buf.append(DOUBLE_QUOTE).append(cleanedArgument)
          .append(DOUBLE_QUOTE).toString();
    } else {
      return cleanedArgument;
    }
  }
}

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements. See the NOTICE file distributed with this
 * work for additional information regarding copyright ownership. The ASF
 * licenses this file to You under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 * 
 * @author <a href="mailto:siegfried.goeschl@it20one.at">Siegfried Goeschl</a>
 */

The code above generates the following result.





















Home »
  Java Tutorial »
    Java Data Type »




Java Boolean
Java Byte
Java Character
Java Currency
Java Double
Java Enum
Java Float
Java Integer
Java Long
Java Short
Java Auto Grow Array
Java Array Compare
Java Array Convert
Java Array Copy Clone
Java Array Fill
Java Array Search and Sort
Java String Convert
Java String File
Java String Format
Java String Operation
Java BigDecimal
Java BigInteger