KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > substituteExample


1 /* ====================================================================
2  * The Apache Software License, Version 1.1
3  *
4  * Copyright (c) 2000 The Apache Software Foundation. All rights
5  * reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright
15  * notice, this list of conditions and the following disclaimer in
16  * the documentation and/or other materials provided with the
17  * distribution.
18  *
19  * 3. The end-user documentation included with the redistribution,
20  * if any, must include the following acknowledgment:
21  * "This product includes software developed by the
22  * Apache Software Foundation (http://www.apache.org/)."
23  * Alternately, this acknowledgment may appear in the software itself,
24  * if and wherever such third-party acknowledgments normally appear.
25  *
26  * 4. The names "Apache" and "Apache Software Foundation", "Jakarta-Oro"
27  * must not be used to endorse or promote products derived from this
28  * software without prior written permission. For written
29  * permission, please contact apache@apache.org.
30  *
31  * 5. Products derived from this software may not be called "Apache"
32  * or "Jakarta-Oro", nor may "Apache" or "Jakarta-Oro" appear in their
33  * name, without prior written permission of the Apache Software Foundation.
34  *
35  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46  * SUCH DAMAGE.
47  * ====================================================================
48  *
49  * This software consists of voluntary contributions made by many
50  * individuals on behalf of the Apache Software Foundation. For more
51  * information on the Apache Software Foundation, please see
52  * <http://www.apache.org/>.
53  *
54  * Portions of this software are based upon software originally written
55  * by Daniel F. Savarese. We appreciate his contributions.
56  */

57
58 import org.apache.oro.text.regex.*;
59 import org.apache.oro.text.awk.*;
60
61 /**
62  * This is a test program demonstrating the use of the Util.substitute()
63  * method. It is the same as the version in the OROMatcher distribution
64  * except that it uses Awk classes instead of Awk classes.
65  *
66  @author <a HREF="dfs@savarese.org">Daniel F. Savarese</a>
67  @version $Id: substituteExample.java,v 1.1.1.1 2000/07/23 23:08:48 jon Exp $
68  */

69 public final class substituteExample {
70
71   /**
72    * A good way for you to understand the substitute() method is to play around
73    * with it by using this test program. The program takes 3 to 5 arguments
74    * as follows:
75    * java substituteExample
76    * regex substitution input [sub limit] [interpolation limit]
77    * regex - A regular expression used to find parts of the input to be
78    * substituted.
79    * sub limit - An optional argument limiting the number of substitutions.
80    * If no limit is given, the limit used is Util.SUBSTITUTE_ALL.
81    * input - A string to be used as input for substitute().
82    * interpolation limit - An optional argument limiting the number of
83    * interpolations performed.
84    *
85    * Try the following command line for a simple example of subsitute().
86    * It changes (2,3) to (3,2) in the input.
87    * java substituteExample '\(2,3\)' '(3, 2)' '(1,2) (2,3) (4,5)'
88    *
89    * The following command line shows the substitute limit at work. It
90    * changed the first four 1's in the input to 4's.
91    * java substituteExample '1' '4' '381298175 1111'
92    */

93   public static final void main(String JavaDoc args[]) {
94     int limit, interps, i;
95     PatternMatcher matcher = new AwkMatcher();
96     Pattern pattern = null;
97     PatternCompiler compiler = new AwkCompiler();
98     String JavaDoc regularExpression, input, result;
99     Substitution sub;
100
101     // Make sure there are sufficient arguments
102
if(args.length < 3) {
103       System.err.println("Usage: substituteExample regex substitution " +
104              "input [sub limit]");
105       System.exit(1);
106     }
107
108     limit = Util.SUBSTITUTE_ALL;
109
110     regularExpression = args[0];
111     sub = new StringSubstitution(args[1]);
112     input = args[2];
113
114     if(args.length > 3)
115       limit = Integer.parseInt(args[3]);
116
117     try {
118       pattern = compiler.compile(regularExpression);
119       System.out.println("substitute regex: " + regularExpression);
120     } catch(MalformedPatternException e){
121       System.err.println("Bad pattern.");
122       System.err.println(e.getMessage());
123       System.exit(1);
124     }
125
126     // Perform substitution and print result.
127
result = Util.substitute(matcher, pattern, sub, input, limit);
128     System.out.println("result: " + result);
129   }
130 }
131
Popular Tags