001 // Copyright 2004, 2005 The Apache Software Foundation 002 // 003 // Licensed under the Apache License, Version 2.0 (the "License"); 004 // you may not use this file except in compliance with the License. 005 // You may obtain a copy of the License at 006 // 007 // http://www.apache.org/licenses/LICENSE-2.0 008 // 009 // Unless required by applicable law or agreed to in writing, software 010 // distributed under the License is distributed on an "AS IS" BASIS, 011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012 // See the License for the specific language governing permissions and 013 // limitations under the License. 014 015 package org.apache.hivemind.util; 016 017 import java.util.ArrayList; 018 import java.util.List; 019 020 /** 021 * A subset of the utilities available in commons-lang StringUtils. It's all 022 * about reducing dependencies, baby! 023 * 024 * @author Howard Lewis Ship 025 */ 026 public class StringUtils 027 { 028 029 /** 030 * Splits an input string into a an array of strings, seperating 031 * at commas. 032 * 033 * @param input the string to split, possibly null or empty 034 * @return an array of the strings split at commas 035 */ 036 public static String[] split(String input) 037 { 038 if (input == null) 039 return new String[0]; 040 041 List strings = new ArrayList(); 042 043 int startx = 0; 044 int cursor = 0; 045 int length = input.length(); 046 047 while (cursor < length) 048 { 049 if (input.charAt(cursor) == ',') 050 { 051 String item = input.substring(startx, cursor); 052 strings.add(item); 053 startx = cursor + 1; 054 } 055 056 cursor++; 057 } 058 059 if (startx < length) 060 strings.add(input.substring(startx)); 061 062 return (String[]) strings.toArray(new String[strings.size()]); 063 } 064 065 /** 066 * Converts a string such that the first character is upper case. 067 * 068 * @param input the input string (possibly empty) 069 * @return the string with the first character converted from lowercase to upper case (may 070 * return the string unchanged if already capitalized) 071 */ 072 073 public static String capitalize(String input) 074 { 075 if (input.length() == 0) 076 return input; 077 078 char ch = input.charAt(0); 079 080 if (Character.isUpperCase(ch)) 081 return input; 082 083 return String.valueOf(Character.toUpperCase(ch)) + input.substring(1); 084 } 085 086 public static String join(String[] input, char separator) 087 { 088 if (input == null || input.length == 0) 089 return null; 090 091 StringBuffer buffer = new StringBuffer(); 092 093 for (int i = 0; i < input.length; i++) 094 { 095 if (i > 0) 096 buffer.append(separator); 097 098 buffer.append(input[i]); 099 } 100 101 return buffer.toString(); 102 } 103 104 /** 105 * Replaces all occurrences of <code>pattern</code> in 106 * <code>string</code> with <code>replacement</code> 107 */ 108 public static String replace(String string, String pattern, String replacement) 109 { 110 StringBuffer sbuf = new StringBuffer(); 111 int index = string.indexOf(pattern); 112 int pos = 0; 113 int patternLength = pattern.length(); 114 for(; index >= 0; index = string.indexOf(pattern, pos)) 115 { 116 sbuf.append(string.substring(pos, index)); 117 sbuf.append(replacement); 118 pos = index + patternLength; 119 } 120 sbuf.append(string.substring(pos)); 121 122 return sbuf.toString(); 123 } 124 125 }