OK, save, here is something better.... /** Takes a string, and replaces the replace text with new text. * @param str String to replace into * @param pattern Pattern of text to replace. * @param replace What to replace it with. * @return str with the replace text replaced with the new text. */ protected static String replace(String str,String pattern, String replace) { int s = 0; int e = 0; StringBuffer result = new StringBuffer();
while ((e = str.indexOf(pattern, s)) >= 0) { result.append(str.substring(s, e)); result.append(replace); s = e+pattern.length(); } result.append(str.substring(s)); return result.toString(); } Ok, here's a shorter one that works better. Also, a faster implementation. private static String templateText; public javascriptJSPInteractiveTagThingy() { super(); StringBuffer sb = new StringBuffer(); try { BufferedReader br = new BufferedReader(new FileReader("/home/gbishop/www/bmg/dev/run/ckie/jsp/charttabletag.template")); String line; while( ((line=br.readLine())!=null)){ sb.append(line); sb.append("\n"); } } catch(IOException e) { System.err.println("IO Error: " + e.getMessage()); } templateText = sb.toString(); } /** * Reads a file from the disk. Replaces XXXX_GOES_HERE text in the file with * Strings that contain the things we want the tag to show. Looks at the page * attributes to control the appearance of the tag's generated HTML. */ public int doStartTag() throws JspTagException { ... JspWriter wr = pageContext.getOut(); PrintWriter writer = new PrintWriter(wr); String line = templateText; line = replace(line, "HEADER_GOES_HERE", header ); line = replace(line, "TABLE_CONTENTS_GOES_HERE", tableContents ); line = replace(line, "SELECTIONS_GOES_HERE", pageContext.getRequest().getParameter("TableSelections") ); line = replace(line, "BACKGROUND_COLOR_GOES_HERE", backgroundColor ); line = replace(line, "HILIGHTED_COLOR_GOES_HERE", hilightedColor ); line = replace(line, "DRAG_COLOR_GOES_HERE", dragColor ); line = replace(line, "SELECTED_COLOR_GOES_HERE", selectedColor ); line = replace(line, "BORDER_COLOR_GOES_HERE", borderColor ); line = replace(line, "TABLE_DATA_VIEW_NAME_GOES_HERE", tableDataViewHiddenFieldName ); line = replace(line, "HTCS_TO_INVOKE_GOES_HERE", htcs ); writer.println(line); return SKIP_BODY; ... Dave Newton wrote: > I know it's protocode :) > > On Friday 01 February 2002 15:22, Greg Bishop wrote: > > protected static String replaceTextInMiddleOfStringIfItExists(String str, > > String replace, > > String newtext){ > > Well, seems to me the "IfItExists" is implied and it replaces text in a string > regardless of location (doesn't have to be in the middle) so why bother > with the novella function name? ;) > > Dave -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>