StringFindingVisitor.java
1 // HTMLParser Library $Name: v1_6_20060319 $ - A java-based parser for HTML 2 // http://sourceforge.org/projects/htmlparser 3 // Copyright (C) 2004 Joshua Kerievsky 4 // 5 // Revision Control Information 6 // 7 // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/visitors/StringFindingVisitor.java,v $ 8 // $Author: derrickoswald $ 9 // $Date: 2004/05/24 16:18:36 $ 10 // $Revision: 1.40 $ 11 // 12 // This library is free software; you can redistribute it and/or 13 // modify it under the terms of the GNU Lesser General Public 14 // License as published by the Free Software Foundation; either 15 // version 2.1 of the License, or (at your option) any later version. 16 // 17 // This library is distributed in the hope that it will be useful, 18 // but WITHOUT ANY WARRANTY; without even the implied warranty of 19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 // Lesser General Public License for more details. 21 // 22 // You should have received a copy of the GNU Lesser General Public 23 // License along with this library; if not, write to the Free Software 24 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 25 // 26 27 package org.htmlparser.visitors; 28 29 import java.util.Locale; 30 31 import org.htmlparser.Text; 32 33 public class StringFindingVisitor extends NodeVisitor 34 { 35 private String stringToFind; 36 private int foundCount; 37 private boolean multipleSearchesWithinStrings; 38 private Locale locale; 39 40 public StringFindingVisitor(String stringToFind) 41 { 42 this (stringToFind, null); 43 } 44 45 public StringFindingVisitor(String stringToFind, Locale locale) 46 { 47 this.locale = (null == locale) ? Locale.ENGLISH : locale; 48 this.stringToFind = stringToFind.toUpperCase (this.locale); 49 foundCount = 0; 50 multipleSearchesWithinStrings = false; 51 } 52 53 public void doMultipleSearchesWithinStrings() 54 { 55 multipleSearchesWithinStrings = true; 56 } 57 58 public void visitStringNode(Text stringNode) 59 { 60 String stringToBeSearched = stringNode.getText().toUpperCase(locale); 61 if (!multipleSearchesWithinStrings && 62 stringToBeSearched.indexOf(stringToFind) != -1) { 63 foundCount++; 64 } else if (multipleSearchesWithinStrings) { 65 int index = -1; 66 do { 67 index = stringToBeSearched.indexOf(stringToFind, index+1); 68 if (index!=-1) 69 foundCount++; 70 } while (index != -1); 71 } 72 } 73 74 public boolean stringWasFound() 75 { 76 return (0 != stringFoundCount()); 77 } 78 79 public int stringFoundCount() 80 { 81 return foundCount; 82 } 83 84 }