Hello Loic, see my comment on the other thread. When I get the time to release 3.5 I'll have a look at the tickets, promise! ;-)
Regards and thank you, Benedikt 2015-07-28 12:20 GMT+02:00 Loic Guibert <lfdummy-apa...@yahoo.fr>: > Hello Benedikt, > LANG version 3.5 being about to be released, have you had time to look > at these 2 methods ? > > https://issues.apache.org/jira/browse/LANG-1139 > https://github.com/apache/commons-lang/pull/92 > > Loic Guibert > PGP : 0x65EB4F33 > > > Le 02/06/2015 10:24, Benedikt Ritter a écrit : > > Hello Loic, > > > > I really appreciate your effort to get this code into lang. Thank you > very > > much! > > Sorry that I'm unable to give you timely feedback on the proposed > changes. > > I'm pretty busy at work at the moment and I've almost zero time for OSS > > right now :-( > > I'll review the changes as soon as I have some more time. > > > > Sorry again for the inconvenience! > > > > Benedikt > > > > 2015-05-28 14:42 GMT+02:00 Loic Guibert <lfdummy-apa...@yahoo.fr>: > > > >> Hello, > >> I implemented 2 null safe methods to replace into a String with regular > >> expression : > >> - String replaceAll(String text, String regex, String replacement); > >> - String replaceFirst(String text, String regex, String replacement); > >> > >> > >> The StringUtils.replacePattern(String source, String regex, String > >> replacement) method adds Pattern#DOTALL option by default which may be > >> undesired. Moreover, this methods is not null safe. > >> > >> I think it could be added to StringUtils. > >> I opened a JIRA ticket (LANG-1139) and an associated Pull Request (#92) > >> > >> > >> There is detail : > >> > >> /** > >> * <p>Replaces each substring of the text String that matches the given > >> regular expression > >> * with the given replacement.</p> > >> * > >> * This method is a {@code null} safe equivalent to: > >> * <ul> > >> * <li>{@code text.replaceAll(regex, replacement)}</li> > >> * <li>{@code > >> Pattern.compile(regex).matcher(text).replaceAll(replacement)}</li> > >> * </ul> > >> * > >> * <p>A {@code null} reference passed to this method is a no-op.</p> > >> * > >> * <p>Unlike in the {@link #replacePattern(String, String, String)} > >> method, the {@link Pattern#DOTALL} option > >> * is NOT automatically added. > >> * To use the DOTALL option prepend <code>"(?s)"</code> to the regex. > >> * DOTALL is also know as single-line mode in Perl.</p> > >> * > >> * <pre> > >> * StringUtils.replaceAll(null, *, *) = null > >> * StringUtils.replaceAll("any", null, *) = "any" > >> * StringUtils.replaceAll("any", *, null) = "any" > >> * StringUtils.replaceAll("", "", "zzz") = "zzz" > >> * StringUtils.replaceAll("", ".*", "zzz") = "zzz" > >> * StringUtils.replaceAll("", ".+", "zzz") = "" > >> * StringUtils.replaceAll("<__>\n<__>", "<.*>", "z") = "z\nz" > >> * StringUtils.replaceAll("<__>\n<__>", "(?s)<.*>", "z") = "z" > >> * StringUtils.replaceAll("ABCabc123", "[a-z]", "_") = "ABC___123" > >> * StringUtils.replaceAll("ABCabc123", "[^A-Z0-9]+", "_") = "ABC_123" > >> * StringUtils.replaceAll("ABCabc123", "[^A-Z0-9]+", "") = "ABC123" > >> * StringUtils.replaceAll("Lorem ipsum dolor sit", "( +)([a-z]+)", > >> "_$2") = "Lorem_ipsum_dolor_sit" > >> * </pre> > >> * > >> * @param text text to search and replace in, may be null > >> * @param regex the regular expression to which this string is to be > >> matched > >> * @param replacement the string to be substituted for each match > >> * @return the text with any replacements processed, > >> * {@code null} if null String input > >> * > >> * @throws PatternSyntaxException > >> * if the regular expression's syntax is invalid > >> * > >> * @see String#replaceAll(String, String) > >> * @see java.util.regex.Pattern > >> * @see java.util.regex.Pattern#DOTALL > >> */ > >> public static String replaceAll(final String text, final String regex, > >> final String replacement); > >> > >> /** > >> * <p>Replaces the first substring of the text string that matches the > >> given regular expression > >> * with the given replacement.</p> > >> * > >> * This method is a {@code null} safe equivalent to: > >> * <ul> > >> * <li>{@code text.replaceFirst(regex, replacement)}</li> > >> * <li>{@code > >> Pattern.compile(regex).matcher(text).replaceFirst(replacement)}</li> > >> * </ul> > >> * > >> * <p>A {@code null} reference passed to this method is a no-op.</p> > >> * > >> * <p>The {@link Pattern#DOTALL} option is NOT automatically added. > >> * To use the DOTALL option prepend <code>"(?s)"</code> to the regex. > >> * DOTALL is also know as single-line mode in Perl.</p> > >> * > >> * <pre> > >> * StringUtils.replaceFirst(null, *, *) = null > >> * StringUtils.replaceFirst("any", null, *) = "any" > >> * StringUtils.replaceFirst("any", *, null) = "any" > >> * StringUtils.replaceFirst("", "", "zzz") = "zzz" > >> * StringUtils.replaceFirst("", ".*", "zzz") = "zzz" > >> * StringUtils.replaceFirst("", ".+", "zzz") = "" > >> * StringUtils.replaceFirst("<__>\n<__>", "<.*>", "z") = "z\n<__>" > >> * StringUtils.replaceFirst("<__>\n<__>", "(?s)<.*>", "z") = "z" > >> * StringUtils.replaceFirst("ABCabc123", "[a-z]", "_") = > >> "ABC_bc123" > >> * StringUtils.replaceFirst("ABCabc123abc", "[^A-Z0-9]+", "_") = > >> "ABC_123abc" > >> * StringUtils.replaceFirst("ABCabc123abc", "[^A-Z0-9]+", "") = > >> "ABC123abc" > >> * StringUtils.replaceFirst("Lorem ipsum dolor sit", "( +)([a-z]+)", > >> "_$2") = "Lorem_ipsum dolor sit" > >> * </pre> > >> * > >> * @param text text to search and replace in, may be null > >> * @param regex the regular expression to which this string is to be > >> matched > >> * @param replacement the string to be substituted for the first match > >> * @return the text with the first replacement processed, > >> * {@code null} if null String input > >> * > >> * @throws PatternSyntaxException > >> * if the regular expression's syntax is invalid > >> * > >> * @see String#replaceFirst(String, String) > >> * @see java.util.regex.Pattern > >> * @see java.util.regex.Pattern#DOTALL > >> */ > >> public static String replaceFirst(final String text, final String regex, > >> final String replacement); > >> > >> > >> Regards, > >> > >> -- > >> Loic Guibert > >> PGP : 0x65EB4F33 > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> For additional commands, e-mail: dev-h...@commons.apache.org > >> > >> > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > -- http://people.apache.org/~britter/ http://www.systemoutprintln.de/ http://twitter.com/BenediktRitter http://github.com/britter