Tuesday 12 March 2024

How to check if the given string a palindrome? in MuleSoft113

 How to check if the given string a palindrome? in MuleSoft

Here's how to check if a given string is a palindrome in MuleSoft using DataWeave:

1. Function Approach:

This method involves creating a reusable function to perform the palindrome check.

%dw 2.0
fun isPalindrome(text: String): Boolean {
  // Remove non-alphanumeric characters and convert to lowercase
  var cleanText = text.replace(/[^\w\s]/g, "").toLowerCase()
  // Check if the reversed string is equal to the original string (ignoring whitespaces)
  cleanText == cleanText.reverse().replace(/\s/g, "")

output = isPalindrome("race car") // returns true


  • The isPalindrome function takes a string as input (text).

  • It removes non-alphanumeric characters using a regular expression (/[^\w\s]/g) and converts the text to lowercase for case-insensitive comparison.

  • The function then checks if the reversed string (cleanText.reverse()) is equal to the original cleaned string after removing whitespaces (replace(/\s/g, "")).

  • The function returns true if it's a palindrome, false otherwise.

2. Inline Expression:

For a one-time check, you can use a DataWeave expression directly within your flow.

%dw 2.0
message.payload == message.payload.reverse().replace(/\s/g, "")


  • This expression compares the original payload string with its reversed version after removing whitespaces.

  • It directly evaluates to true if it's a palindrome, false otherwise.

Choosing the Right Approach:

  • Function: This approach is preferred for reusability, especially if you need to perform the palindrome check in multiple places within your Mule application.

  • Inline expression: This method is suitable for simple, one-time checks where creating a separate function might be overkill.

Additional Notes:

  • You can modify the regular expression in the function to handle specific requirements, like including punctuation or spaces in the palindrome check.

  • Error handling can be incorporated to gracefully handle situations where the input might not be a string.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.