[GitHub] Yash-777 commented on a change in pull request #395: Replaces the given String, with the String which is nested in between two Strings.

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[GitHub] Yash-777 commented on a change in pull request #395: Replaces the given String, with the String which is nested in between two Strings.

GitBox
Yash-777 commented on a change in pull request #395: Replaces the given String, with the String which is nested in between two Strings.
URL: https://github.com/apache/commons-lang/pull/395#discussion_r247473007
 
 

 ##########
 File path: src/main/java/org/apache/commons/lang3/StringUtils.java
 ##########
 @@ -3124,6 +3124,41 @@ public static String substringBetween(final String str, final String open, final
         return list.toArray(new String [list.size()]);
     }
 
+    /**
+     * <p>Replaces the given String, with the String which is nested in between two Strings.</p>
+     *
+     * <p>A {@code null} input String returns {@code null}.
+     * A {@code null} open/close returns {@code null} (no match).
+     * An empty ("") open and close returns an empty string.</p>
+     *
+     * @param str  the String containing the substring, may be null
+     * @param replace the Sting to be replaced, which is nested in between open and close substrings
+     * @param open  the String before the substring, may be null
+     * @param close  the String after the substring, may be null
+     * @return the substring, {@code null} if no match
+     */
+    public static String replaceSubstringInBetween(final String str, final String replace, final String open, final String close) {
+        if (str == null || open == null || close == null) {
+            return null;
+        }
+        final int start = str.indexOf(open);
+        if (start != INDEX_NOT_FOUND) {
+            String preceding = "";
+            if (start > 0) {
+                preceding = str.substring(0, start);
 
 Review comment:
   Thanks a lot,
   
   As per your suggestion have changed the code as follows.
   ```java
   public static String replaceSubstringInBetween(final String str, final String replace, final String open, final String close) {
       if (str == null) {
           return null;
       }
       if (open == null || close == null) {
           return str;
       }
       final int start = str.indexOf(open);
       if (start != INDEX_NOT_FOUND) {
           String preceding = str.substring(0, start);
           final int end = str.indexOf(close, start + open.length());
           if (end != INDEX_NOT_FOUND) {
               String exceeding = str.substring(end + close.length(), str.length());
               //String middleString = str.substring(start + open.length(), end);
               return preceding + open + replace + close + exceeding;
           }
       }
       return str;
   }
   ```
   Please suggest that the name of the function is valid `replaceSubstringInBetween()` or do i need to change the name.
   
   I will add more unit test on this function.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[hidden email]


With regards,
Apache Git Services