001 package ca.uhn.hl7v2.util;
002
003 /**
004 * Various string utility methods
005 */
006 public class StringUtil {
007
008 /**
009 * Counts the number of lines in a string by counting the number of "\n" or
010 * "\r" or "\r\n" sequences which appear in it
011 */
012 public static int countLines(String theString) {
013 int retVal = 1;
014
015 for (int i = 0; i < theString.length(); i++) {
016 char nextChar = theString.charAt(i);
017 if (i > 0 && nextChar == '\n' && theString.charAt(i - 1) == '\r') {
018 continue;
019 }
020 if (nextChar == '\r' | nextChar == '\n') {
021 retVal++;
022 }
023 }
024
025 return retVal;
026 }
027
028 /**
029 * Removes any line separators (\r ot \n) from the end of a string and
030 * returns that string
031 */
032 public static String chomp(String theLine) {
033 int i;
034 int start = theLine.length() - 1;
035 for (i = start; i >= 0; i--) {
036 char nextChar = theLine.charAt(i);
037 if (nextChar != '\r' && nextChar != '\n') {
038 break;
039 }
040 }
041
042 if (i == start) {
043 return theLine;
044 } else {
045 return theLine.substring(0, i + 1);
046 }
047 }
048
049 /**
050 * Throws an IllegalArgumentException if the value is an empty string or
051 * null
052 */
053 public static void validateNotEmpty(String theValue) {
054 if (theValue == null || theValue.length() == 0) {
055 throw new IllegalArgumentException();
056 }
057 }
058
059 /**
060 * Search within a string and replace one substring with another. Based on
061 * the method within Commons-Lang StringUtils.
062 */
063 public static String replace(String theString, String theMatch, String theReplacement) {
064 StringBuffer buf = new StringBuffer(theString.length());
065 int start = 0, end = 0;
066 while ((end = theString.indexOf(theMatch, start)) != -1) {
067 buf.append(theString.substring(start, end)).append(theReplacement);
068 start = end + theMatch.length();
069 }
070 buf.append(theString.substring(start));
071 return buf.toString();
072 }
073
074 }