Remove whitespace from the ends as well as excessive whitespace within the inside of the string between non-whitespace characters. : String char « Data Type « Java






Remove whitespace from the ends as well as excessive whitespace within the inside of the string between non-whitespace characters.

    
/*
 *  Licensed to the Apache Software Foundation (ASF) under one
 *  or more contributor license agreements.  See the NOTICE file
 *  distributed with this work for additional information
 *  regarding copyright ownership.  The ASF licenses this file
 *  to you under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
 *  
 *  Unless required by applicable law or agreed to in writing,
 *  software distributed under the License is distributed on an
 *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *  KIND, either express or implied.  See the License for the
 *  specific language governing permissions and limitations
 *  under the License. 
 *  
 */



/**
 * Various string manipulation methods that are more efficient then chaining
 * string operations: all is done in the same buffer without creating a bunch of
 * string objects.
 * 
 * @author <a href="mailto:dev@labs.apache.org">Dungeon Project</a>
 */
public class Main {
  /**
   * A deep trim of a string remove whitespace from the ends as well as
   * excessive whitespace within the inside of the string between
   * non-whitespace characters. A deep trim reduces internal whitespace down
   * to a single space to perserve the whitespace separated tokenization order
   * of the String.
   * 
   * @param string
   *            the string to deep trim.
   * @return the trimmed string.
   */
  public static final String deepTrim( String string )
  {
      return deepTrim( string, false );
  }


  /**
   * This does the same thing as a trim but we also lowercase the string while
   * performing the deep trim within the same buffer. This saves us from
   * having to create multiple String and StringBuffer objects and is much
   * more efficient.
   * 
   * @see StringTools#deepTrim( String )
   */
  public static final String deepTrimToLower( String string )
  {
      return deepTrim( string, true );
  }


  /**
   * Put common code to deepTrim(String) and deepTrimToLower here.
   * 
   * @param str
   *            the string to deep trim
   * @param toLowerCase
   *            how to normalize for case: upper or lower
   * @return the deep trimmed string
   * @see StringTools#deepTrim( String )
   * 
   * TODO Replace the toCharArray() by substring manipulations
   */
  public static final String deepTrim( String str, boolean toLowerCase )
  {
      if ( ( null == str ) || ( str.length() == 0 ) )
      {
          return "";
      }

      char ch;
      char[] buf = str.toCharArray();
      char[] newbuf = new char[buf.length];
      boolean wsSeen = false;
      boolean isStart = true;
      int pos = 0;

      for ( int i = 0; i < str.length(); i++ )
      {
          ch = buf[i];

          // filter out all uppercase characters
          if ( toLowerCase )
          {
              if ( Character.isUpperCase( ch ) )
              {
                  ch = Character.toLowerCase( ch );
              }
          }

          // Check to see if we should add space
          if ( Character.isWhitespace( ch ) )
          {
              // If the buffer has had characters added already check last
              // added character. Only append a spc if last character was
              // not whitespace.
              if ( wsSeen )
              {
                  continue;
              }
              else
              {
                  wsSeen = true;

                  if ( isStart )
                  {
                      isStart = false;
                  }
                  else
                  {
                      newbuf[pos++] = ch;
                  }
              }
          }
          else
          {
              // Add all non-whitespace
              wsSeen = false;
              isStart = false;
              newbuf[pos++] = ch;
          }
      }

      return ( pos == 0 ? "" : new String( newbuf, 0, ( wsSeen ? pos - 1 : pos ) ) );
  }

}

   
    
    
    
  








Related examples in the same category

1.StrCharAt - show String.charAt()
2.Basic tab-character handling stuff
3.Convert Characters to Lower Case
4.Convert Characters to Upper Case
5.Replace Characters in a String
6.Character array to String conversion
7.Convert String to character array
8.Last occurrence of a character
9.Extract Ascii codes from a String
10.To remove a character
11.Removes specified chars from a string
12.Checks if a String is not empty (""), not null and not whitespace only.
13.Checks if a String is whitespace, empty ("") or null.
14.Checks if the String contains any character in the given set of characters.
15.Checks if the String contains only certain characters.
16.Checks if the String contains only whitespace.
17.Checks if the string contains only ASCII printable characters.
18.Checks that the String does not contain certain characters.
19.The character array based string
20.Checks whether the String contains only digit characters.
21.Remove char from a string
22.Removes any hypens ( - ) from the given string
23.Returns a new string with all the whitespace removed
24.Is char a white space character
25.Simple scanner that allows to navigate over the characters of a string.
26.Returns a string with size of count and all characters initialized with ch.
27.Returns a string that contains all characters of the given string in reverse order.
28.Returns a string that is equivalent to the specified string with its first character converted to uppercase
29.Count the number of occurrences of character c in a string.
30.A fast way to convert character arrays into Strings.
31.XML utilities that pertain to character handling (markup or character data), without use of any XML libraries.
32.Check whether the given String contains any whitespace characters.
33.Character utilities.
34.Provides a number of static methods which interact with java.nio.charset.Charset to analyze and transform the strings identifing character encodings.
35.Operations on char primitives and Character objects.
36.Cleans strings of illegal characters with respect to the XML specification.
37.Return the result of adding the specified character to the specified sorted character array.
38.Return a displayable version of the character sequence, followed by integer positions at various powers of 10.
39.Returns the string constructed from the specified character sequence by deaccenting each of its characters.
40.Returns a hash code for a character sequence that is equivalent to the hash code generated for a its string yield.
41.Return true if the two character sequences have the same length and the same characters.
42.Returns an array of substrings of the specified string, in order, with divisions before and after any instance of the specified character.
43.Returns true if specified character is a punctuation character.
44.Appends a whitespace-normalized form of the specified character sequence into the specified string buffer.
45.Determine whether characters may appear in certain roles in XML documents.
46.Advanced navigation over the underlying string.
47.Compare two char sequences
48.Contents As CharSequence