- /** Replace the first matching pattern in String s. */\r
- public String replaceFirst(String s) {\r
- return dorep(s,0,s.length());\r
- }\r
- /** Replace the first matching pattern after position start in\r
- String s. */\r
- public String replaceFirstFrom(String s,int start) {\r
- return dorep(s,start,s.length());\r
- }\r
- /** Replace the first matching pattern that begins between\r
- start and end inclusive. */\r
- public String replaceFirstRegion(String s,int start,int end) {\r
- return dorep(s,start,end);\r
- }\r
+ /** Set the Regex at position i in this Transformer. */\r
+ public void setRegexAt(Regex rx, int i)\r
+ {\r
+ if (i >= tp.ra_len)\r
+ {\r
+ throw new ArrayIndexOutOfBoundsException("i=" + i + ">=" + patterns());\r
+ }\r
+ if (i < 0)\r
+ {\r
+ throw new ArrayIndexOutOfBoundsException("i=" + i + "< 0");\r
+ }\r
+ tp.ra[i] = rx;\r
+ }\r
+\r
+ /** Add a new Regex by calling Regex.perlCode\r
+ @see com.stevesoft.pat.Regex#perlCode(java.lang.String)\r
+ */\r
+ public void add(String rs)\r
+ {\r
+ Regex r = Regex.perlCode(rs);\r
+ if (r == null)\r
+ {\r
+ throw new NullPointerException("bad pattern to Regex.perlCode: " + rs);\r
+ }\r
+ add(r);\r
+ }\r
+\r
+ /** Add an array of Strings (which will be converted to\r
+ Regex's via the Regex.perlCode method.\r
+ @see com.stevesoft.pat.Regex#perlCode(java.lang.String)\r
+ */\r
+ public void add(String[] array)\r
+ {\r
+ for (int i = 0; i < array.length; i++)\r
+ {\r
+ add(array[i]);\r
+ }\r
+ }\r
+\r
+ /** Replace all matches in the current String. */\r
+ public String replaceAll(String s)\r
+ {\r
+ return dorep(s, 0, s.length());\r
+ }\r
+\r
+ public StringLike replaceAll(StringLike s)\r
+ {\r
+ return dorep(s, 0, s.length());\r
+ }\r
+\r
+ /** Replace all matching patterns beginning at position start. */\r
+ public String replaceAllFrom(String s, int start)\r
+ {\r
+ return dorep(s, start, s.length());\r
+ }\r
+\r
+ /** Replace all matching patterns beginning between the positions\r
+ start and end inclusive. */\r
+ public String replaceAllRegion(String s, int start, int end)\r
+ {\r
+ return dorep(s, start, end);\r
+ }\r
+\r
+ Replacer repr = new Replacer();\r
+ final StringLike dorep(StringLike s, int start, int end)\r
+ {\r
+ StringLike tfmd = repr.replaceAllRegion(s, rp, start, end);\r
+ tp.lastMatchedTo = repr.lastMatchedTo;\r
+ return tfmd;\r
+ }\r
+\r
+ final String dorep(String s, int start, int end)\r
+ {\r
+ return dorep(new StringWrap(s), start, end).toString();\r
+ }\r
+\r
+ /** Replace the first matching pattern in String s. */\r
+ public String replaceFirst(String s)\r
+ {\r
+ return dorep(s, 0, s.length());\r
+ }\r
+\r
+ /** Replace the first matching pattern after position start in\r
+ String s. */\r
+ public String replaceFirstFrom(String s, int start)\r
+ {\r
+ return dorep(s, start, s.length());\r
+ }\r
+\r
+ /** Replace the first matching pattern that begins between\r
+ start and end inclusive. */\r
+ public String replaceFirstRegion(String s, int start, int end)\r
+ {\r
+ return dorep(s, start, end);\r
+ }\r