Given a string in camel case, the task is to write a Java program to convert the given string from camel case to snake case and print the modified string.
Examples:
Input: GeeksForGeeks
Output: geeks_for_geeks
Input: CamelCaseToSnakeCase
Output: camel_case_to_snake_case
Method 1: Naive Approach
- First we initialize a variable ‘result’ with an empty string and append the first character (in lower case) to it.
- Now iterate over each character of the string from first index to the last index, if the character is upper case alphabet, we append ‘_’ and the character (in lower case) to result, otherwise just append the character only.
Below is the implementation of the above approach:
Java
class GFG {
// Function to convert camel case
// string to snake case string
public static String camelToSnake(String str)
{
// Empty String
String result = "" ;
// Append first character(in lower case)
// to result string
char c = str.charAt( 0 );
result = result + Character.toLowerCase(c);
// Traverse the string from
// ist index to last index
for ( int i = 1 ; i < str.length(); i++) {
char ch = str.charAt(i);
// Check if the character is upper case
// then append '_' and such character
// (in lower case) to result string
if (Character.isUpperCase(ch)) {
result = result + '_' ;
result
= result
+ Character.toLowerCase(ch);
}
// If the character is lower case then
// add such character into result string
else {
result = result + ch;
}
}
// return the result
return result;
}
public static void main(String args[])
{
// Given string str
String str = "GeeksForGeeks" ;
// Print the modified string
System.out.print(camelToSnake(str));
}
} |
Output:
geeks_for_geeks
Time Complexity: O(n)
Auxiliary Space: O(n)
Method 2: Using String.replaceAll method
- The idea is to use the String.replaceAll method to convert given string from camel case to snake case.
- The String.replaceAll method accepts two parameters a regular expression and a replacement string. It replaces the regular expression with the replacement string and prints the modified string.
Below is the implementation of the above approach:
Java
import java.util.regex.*;
class GFG {
// Function to convert camel case
// string to snake case string
public static String
camelToSnake(String str)
{
// Regular Expression
String regex = "([a-z])([A-Z]+)" ;
// Replacement string
String replacement = "$1_$2" ;
// Replace the given regex
// with replacement string
// and convert it to lower case.
str = str
.replaceAll(
regex, replacement)
.toLowerCase();
// return string
return str;
}
// Driver Code
public static void main(String args[])
{
// Given string str
String str = "GeeksForGeeks" ;
// Print the modified string
System.out.print(camelToSnake(str));
}
} |
Output:
geeks_for_geeks
Time Complexity: O(n)
Auxiliary Space: O(1)