Basic tab-character handling stuff : String char « Data Type « Java






Basic tab-character handling stuff

      
/*
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002.
 * All rights reserved. Software written by Ian F. Darwin and others.
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * 
 * Java, the Duke mascot, and all variants of Sun's Java "steaming coffee
 * cup" logo are trademarks of Sun Microsystems. Sun's, and James Gosling's,
 * pioneering role in inventing and promulgating (and standardizing) the Java 
 * language and environment is gratefully acknowledged.
 * 
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for
 * inventing predecessor languages C and C++ is also gratefully acknowledged.
 */


import junit.framework.TestCase;

/** Basic tab-character handling stuff.
 * <p>
 * N.B. Can only handle equally-spaced tab stops as written.
 * @author Ian F. Darwin, http://www.darwinsys.com/
 * @version $Id: Tabs.java,v 1.9 2004/02/28 02:48:15 ian Exp $
 */
public class Tabs {
  /** tabs every so often */
  public final static int DEFTABSPACE =   8;
  /** the current tab stop setting. */
  protected int tabSpace = DEFTABSPACE;
  /** The longest line that we initially set tabs for. */
  public final static int MAXLINE  = 255;
  /** the current tab stops */
  protected boolean[] tabstops;

  /** Construct a Tabs object with a given tab stop settings */
  public Tabs(int n) {
    if (n <= 0) {
      n = 1;
    }
    tabstops = new boolean[MAXLINE];
    tabSpace = n;
    settabs();
  }

  /** Construct a Tabs object with a default tab stop settings */
  public Tabs() {
    this(DEFTABSPACE);
  }

  /** settabs - set initial tab stops */
  private void settabs() {
    for (int i = 0; i < tabstops.length; i++) {
      tabstops[i] = ((i+1) % tabSpace) == 0;
    }
  }
  
  /**
   * @return Returns the tabSpace.
   */
  public int getTabSpacing() {
    return tabSpace;
  }
  
  /** isTabStop - returns true if given column is a tab stop.
   * @param col - the current column number
   */
  public boolean isTabStop(int col) {
    if (col > tabstops.length - 1) {
      tabstops = new boolean[tabstops.length * 2];
      settabs();
    }
    return tabstops[col];
  }
}



/**
 * @author ian
 *
 * To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Generation - Code and Comments
 */
class TabsTest extends TestCase {

  public static void main(String[] args) {
    junit.textui.TestRunner.run(TabsTest.class);
  }

  private Tabs t4, t8;
  
  public void setUp() {
    t4 = new Tabs(4);
    t8 = new Tabs();
  }
  
  public void testGetTabSpacing() {
    assertEquals(t4.getTabSpacing(), 4);
    assertEquals(t8.getTabSpacing(), Tabs.DEFTABSPACE);
  }
  
  public  void testIsTabStop() {
    assertEquals(false, t4.isTabStop(0));
    assertEquals(false, t4.isTabStop(1));
    assertEquals(false, t4.isTabStop(2));
    assertEquals(true,  t4.isTabStop(3));
    assertEquals(false, t4.isTabStop(4));
    assertEquals(false, t4.isTabStop(5));
    assertEquals(false, t4.isTabStop(6));
    assertEquals(true,  t4.isTabStop(7));
    assertEquals(false, t4.isTabStop(8));
  }
}




           
         
    
    
    
    
    
  








Related examples in the same category

1.StrCharAt - show String.charAt()
2.Convert Characters to Lower Case
3.Convert Characters to Upper Case
4.Replace Characters in a String
5.Character array to String conversion
6.Convert String to character array
7.Last occurrence of a character
8.Extract Ascii codes from a String
9.To remove a character
10.Removes specified chars from a string
11.Checks if a String is not empty (""), not null and not whitespace only.
12.Checks if a String is whitespace, empty ("") or null.
13.Checks if the String contains any character in the given set of characters.
14.Checks if the String contains only certain characters.
15.Checks if the String contains only whitespace.
16.Checks if the string contains only ASCII printable characters.
17.Checks that the String does not contain certain characters.
18.The character array based string
19.Checks whether the String contains only digit characters.
20.Remove char from a string
21.Remove whitespace from the ends as well as excessive whitespace within the inside of the string between non-whitespace characters.
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