| /******************************************************************************* |
| * Copyright (c) 2006 Sybase, Inc. and others. |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Sybase, Inc. - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jst.jsf.common.ui.internal.utils; |
| |
| import java.util.regex.Pattern; |
| |
| /** |
| * This is tool class for String processing. |
| * |
| * @author mengbo |
| */ |
| public class StringUtil { |
| |
| // pattern to find all end-of-paragraph and end-of-line html tags |
| // so they can be converted to newlines |
| final private static Pattern htmlToNewline = Pattern.compile("</p>|<br>"); //$NON-NLS-1$ |
| |
| // pattern to strip all <x> and </x> HTML tags |
| final private static Pattern removeHTMLTags = Pattern.compile("<[/?\\w\\s=\"\\.\\#]+>"); //$NON-NLS-1$ |
| |
| // pattern to find all runs of spaces longer than one |
| final private static Pattern trimInteriorWhitespace = Pattern.compile("[ ]+"); //$NON-NLS-1$ |
| |
| /** |
| * Split a java variable name into words For example, "_aJavaVariable" will |
| * split to "A Java Variable", "_aWTPPackageImplementation" will be "A WTP |
| * Package Implementation" |
| * |
| * @param variable |
| * @return String |
| */ |
| public static String splitVariable(String variable) { |
| StringBuffer output = new StringBuffer(""); //$NON-NLS-1$ |
| boolean isCapitalLeading = false; |
| boolean isLastSpace = false; |
| |
| for (int i = 0, n = variable.length(); i < n; i++) { |
| char letter = variable.charAt(i); |
| |
| if (letter == '_' || letter == '$') { |
| output.append(" "); //$NON-NLS-1$ |
| isCapitalLeading = false; |
| isLastSpace = true; |
| continue; |
| } |
| |
| if (Character.isLowerCase(letter)) { |
| int nextIndex = i + 1; |
| if (nextIndex < n) { |
| char nextLetter = variable.charAt(nextIndex); |
| if (Character.isUpperCase(nextLetter)) { |
| if (isCapitalLeading) { |
| output.append(letter); |
| isLastSpace = false; |
| } else { |
| output.append(Character.toUpperCase(letter)); |
| isLastSpace = false; |
| } |
| if (!isLastSpace) { |
| output.append(' '); |
| isLastSpace = true; |
| } |
| isCapitalLeading = false; |
| continue; |
| } |
| } |
| } |
| if (Character.isUpperCase(letter)) { |
| int nextIndex = i + 1; |
| if (nextIndex < n) { |
| char nextLetter = variable.charAt(nextIndex); |
| if (Character.isLowerCase(nextLetter)) { |
| if (!isLastSpace) { |
| output.append(' '); |
| isLastSpace = true; |
| } |
| output.append(letter); |
| isCapitalLeading = true; |
| isLastSpace = false; |
| continue; |
| } |
| } |
| } |
| if (isCapitalLeading) { |
| output.append(letter); |
| isLastSpace = false; |
| } else { |
| output.append(Character.toUpperCase(letter)); |
| isCapitalLeading = true; |
| isLastSpace = false; |
| } |
| } |
| |
| return output.toString().trim(); |
| } |
| |
| /** |
| * @param str1 |
| * @param str2 |
| * @return boolean |
| * |
| * Check if two strings match or not if str1=null and str2=null, it will |
| * return true |
| */ |
| public static boolean isSameString(String str1, String str2) { |
| if (str1 == null) { |
| return str2 == null; |
| } |
| return str1.equals(str2); |
| } |
| |
| /** |
| * |
| * @param text |
| * @return String Filter and convert a string, or normalize a string For |
| * example, |
| * <p> |
| * test |
| * </p> |
| * test1<a/> will be converted to: test\ntest1 |
| * |
| */ |
| public static String filterConvertString(String text) { |
| if (text == null) { |
| return ""; //$NON-NLS-1$ |
| } |
| |
| String result = htmlToNewline.matcher(text).replaceAll("\n"); //$NON-NLS-1$ |
| result = removeHTMLTags.matcher(result).replaceAll(""); //$NON-NLS-1$ |
| result = trimInteriorWhitespace.matcher(result).replaceAll(" "); //$NON-NLS-1$ |
| |
| return result; |
| } |
| |
| /** |
| * Determine whether a string is empty or not Example: null string -> return |
| * true; Example: "" string -> return true; Otherwise, will return false; |
| * @param str |
| * |
| * @return true if str is null or empty |
| */ |
| public static boolean isEmptyString(String str) { |
| if (str == null || str.length() == 0) { |
| return true; |
| } |
| return false; |
| } |
| } |