commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Benedikt Ritter <brit...@apache.org>
Subject Re: [LANG] Adding StringUtils replace by regular expression methods
Date Tue, 02 Jun 2015 06:24:19 GMT
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-apache@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-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>


-- 
http://people.apache.org/~britter/
http://www.systemoutprintln.de/
http://twitter.com/BenediktRitter
http://github.com/britter

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message