/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil -*- * * The contents of this file are subject to the Mozilla Public License * Version 1.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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is the Grendel mail/news client. * * The Initial Developer of the Original Code is Netscape Communications * Corporation. Portions created by Netscape are Copyright (C) 1997 * Netscape Communications Corporation. All Rights Reserved. */ package calypso.util; public class StringUtils { /** * Uppercase the characters in aString. * * @see: java.lang.Character */ static public String UpperCase(String aString) { StringBuf buf = StringBuf.Alloc(); buf.append(aString); buf.toUpperCase(); aString = buf.toString(); StringBuf.Recycle(buf); return aString; } /** * Lowercase the characters in aString. * * @see: java.lang.Character */ static public String LowerCase(String aString) { StringBuf buf = StringBuf.Alloc(); buf.append(aString); buf.toLowerCase(); aString = buf.toString(); StringBuf.Recycle(buf); return aString; } /** * Return true if the string buffer contains nothing but whitespace * as defined by Character.isWhitespace() * * @see: java.lang.Character */ static public boolean IsWhitespace(String aString) { // XXX this should just loop right here instead of copying // the string because the loop will be inlined with a good // compiler StringBuf buf = StringBuf.Alloc(); buf.append(aString); boolean rv = buf.isWhitespace(); StringBuf.Recycle(buf); return rv; } /** * Translate an integer into a string that is at least aDigits * wide. Pad with zeros if necessary. */ static public String ToHex(int i, int aDigits) { String rv = Integer.toString(i, 16); int len = rv.length(); if (len < aDigits) { StringBuf buf = StringBuf.Alloc(); len = aDigits - len; while (--len >= 0) { buf.append('0'); } buf.append(rv); rv = buf.toString(); StringBuf.Recycle(buf); } return rv; } /** * Compress the whitespace out of a string and return a new string */ static public String CompressWhitespace(String aString, boolean aLeading) { StringBuf buf = StringBuf.Alloc(); buf.append(aString); buf.compressWhitespace(aLeading); String rv = buf.toString(); StringBuf.Recycle(buf); return rv; } /** * Quote a string using java source file rules. The result is a new * string with all the appropriate data quoted. The outer quotes that * would be required in a java source file are not provided by this * routine unless aProvideOuterQuotes is true. */ static char[] hex; static { hex = new char[16]; "0123456789abcdef".getChars(0, 16, hex, 0); } static public String JavaQuote(String aString, boolean aProvideOuterQuotes) { StringBuf buf = StringBuf.Alloc(); if (aProvideOuterQuotes) { buf.append('"'); } for (int i = 0, n = aString.length(); i < n; i++) { char ch = aString.charAt(i); switch (ch) { case '\n': buf.append("\\n"); break; case '\r': buf.append("\\r"); break; case '\t': buf.append("\\t"); break; case '"': buf.append("\\\""); break; default: if ((ch < 32) || (ch >= 127)) { buf.append("\\u"); buf.append(hex[(ch >> 12) & 0xf]); buf.append(hex[(ch >> 8) & 0xf]); buf.append(hex[(ch >> 4) & 0xf]); buf.append(hex[ch & 0xf]); } else { buf.append(ch); } } } if (aProvideOuterQuotes) { buf.append('"'); } String rv = buf.toString(); StringBuf.Recycle(buf); return rv; } }