001/* ========================================================================
002 * JCommon : a free general purpose class library for the Java(tm) platform
003 * ========================================================================
004 *
005 * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
006 * 
007 * Project Info:  http://www.jfree.org/jcommon/index.html
008 *
009 * This library is free software; you can redistribute it and/or modify it 
010 * under the terms of the GNU Lesser General Public License as published by 
011 * the Free Software Foundation; either version 2.1 of the License, or 
012 * (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but 
015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
017 * License for more details.
018 *
019 * You should have received a copy of the GNU Lesser General Public
020 * License along with this library; if not, write to the Free Software
021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
022 * USA.  
023 *
024 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
025 * in the United States and other countries.]
026 * 
027 * ----------------
028 * StringUtils.java
029 * ----------------
030 * (C)opyright 2003, 2004, by Thomas Morgner and Contributors.
031 *
032 * Original Author:  Thomas Morgner;
033 * Contributor(s):   David Gilbert (for Object Refinery Limited);
034 *
035 * $Id: StringUtils.java,v 1.5 2005/10/18 13:24:19 mungady Exp $
036 *
037 * Changes
038 * -------------------------
039 * 21.06.2003 : Initial version
040 *
041 */
042
043package org.jfree.util;
044
045/**
046 * String utilities.
047 * 
048 * @author Thomas Morgner.
049 */
050public class StringUtils {
051
052    /**
053     * Private constructor prevents object creation. 
054     */
055    private StringUtils() {
056    }
057
058    /**
059     * Helper functions to query a strings start portion. The comparison is case insensitive.
060     *
061     * @param base  the base string.
062     * @param start  the starting text.
063     *
064     * @return true, if the string starts with the given starting text.
065     */
066    public static boolean startsWithIgnoreCase(final String base, final String start) {
067        if (base.length() < start.length()) {
068            return false;
069        }
070        return base.regionMatches(true, 0, start, 0, start.length());
071    }
072
073    /**
074     * Helper functions to query a strings end portion. The comparison is case insensitive.
075     *
076     * @param base  the base string.
077     * @param end  the ending text.
078     *
079     * @return true, if the string ends with the given ending text.
080     */
081    public static boolean endsWithIgnoreCase(final String base, final String end) {
082        if (base.length() < end.length()) {
083            return false;
084        }
085        return base.regionMatches(true, base.length() - end.length(), end, 0, end.length());
086    }
087
088    /**
089     * Queries the system properties for the line separator. If access
090     * to the System properties is forbidden, the UNIX default is returned.
091     *
092     * @return the line separator.
093     */
094    public static String getLineSeparator() {
095        try {
096            return System.getProperty("line.separator", "\n");
097        }
098        catch (Exception e) {
099            return "\n";
100        }
101    }
102
103
104}