[ 
https://issues.apache.org/jira/browse/LANG-1030?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14073163#comment-14073163
 ] 

Michael Bazos commented on LANG-1030:
-------------------------------------

The use case I mentioned above my team uses this to combine like properties 
from different objects.  I believe this would also be useful when you need to 
normalize a String from input (would be a little cleaner than the ternary 
operation).  Like I said previously this method is like equals/equalsIgnoreCase 
but instead of returning a boolean returns the String itself or some default 
value.

Example of normalization for input:
{code}
public void doSomething(String foo) {
//foo either has to be BAR or BAZ...BAZ would be the default if it isn't the 
same
String fooNormalized = StringUtils.same("BAR", foo, "BAZ");

//comparing to a ternary operation
String fooNormalized = "BAR".equals(foo) ? "BAR" : "BAZ";
}
{code}

I didn't write the full patch with tests because I wasn't sure if this use case 
would warrant something being added to StringUtils and I agree with your last 
comment about it bloating StringUtils.  We had this use case come up a lot so 
figured this would be the right place to start the discussion.

> StringUtils.same opposite method to StringUtils.differ
> ------------------------------------------------------
>
>                 Key: LANG-1030
>                 URL: https://issues.apache.org/jira/browse/LANG-1030
>             Project: Commons Lang
>          Issue Type: Improvement
>    Affects Versions: 3.3.2
>            Reporter: Michael Bazos
>            Priority: Trivial
>              Labels: StringUtils
>             Fix For: Review Patch, Discussion
>
>
> This is pretty easy to do but I have seen this come up and was surprised to 
> find that StringUtils didn't have a utility method.
> The difference() method is described as doing the following:
> Compares two Strings, and returns the portion where they differ.
> What I am proposing is essentially the opposite of the difference method 
> called same().  This method would compare two String and return a new String 
> when they are the same.
> This is essentially the implementation:
> {code:java}
>     public static String same(String str1, String str2) {
>         if (str1 != null && StringUtils.equalsIgnoreCase(str1, str2)) {
>             return new String(str1);
>         }
>         return null;
>     }
> {code}
> {code:java}
> StringUtils.same(null, null) = null
> StringUtils.same("", "") = "";
> StringUtils.same("123", "") = null
> StringUtils.same("123", "123") = "123";
> {code}
> If there is already a way to do this using the apache lang library please 
> point me in the right direction.  Otherwise I would be more than happy to do 
> the testing, coding and documentation for this.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to