You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@nifi.apache.org by GitBox <gi...@apache.org> on 2021/10/27 15:13:21 UTC

[GitHub] [nifi] kevdoran commented on a change in pull request #5458: NIFI-7865 amqp$header is splitted in the wrong way for "," and "}"

kevdoran commented on a change in pull request #5458:
URL: https://github.com/apache/nifi/pull/5458#discussion_r737576297



##########
File path: nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/StringUtils.java
##########
@@ -510,4 +514,27 @@ public static String toTitleCase(String input) {
                 .map(word -> Character.toTitleCase(word.charAt(0)) + word.substring(1))
                 .collect(Collectors.joining(" "));
     }
+
+    /**
+     * Escape {@code str} by replacing occurrences of {@code charToEscape} with {@code escapeChar+charToEscape}
+     * @param str the input string
+     * @param escapeChar the character used for escaping
+     * @param charToEscape the character that needs to be escaped
+     * @return the escaped string
+     */
+    public static String escapeString(String str, char escapeChar, char charToEscape) {
+        if (str == null || str.isEmpty()) {
+            return null;
+        }
+        StringBuilder result = new StringBuilder();
+        for (int i=0; i<str.length(); i++) {
+            char curChar = str.charAt(i);
+            if (curChar == escapeChar || curChar == charToEscape) {
+                // special char
+                result.append(escapeChar);
+            }
+            result.append(curChar);

Review comment:
       Minor, but it would be nice if this utility method were idempotent, meaning that if I pass it a string that contains some already escaped characters, it has not effect on those, in order words, all of these invocations would return the same result:
   
   ```
   StringUtils.escapeString("key=(value0,value1,value2)", '\\', ',');
   StringUtils.escapeString("key=(value0\\,value1,value2)", '\\', ',');
   StringUtils.escapeString("key=(value0\\,value1\\,value2)", '\\', ',');
   ```
   




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@nifi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org