Here you can find the source of toSnakeCase(String str)
public static String toSnakeCase(String str)
//package com.java2s; /*// w w w. ja v a 2s. c om * Syncany, www.syncany.org * Copyright (C) 2011-2015 Philipp C. Heckel <philipp.heckel@gmail.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ public class Main { /** * Transforms a string to underscore-delimited representation. * * <p>Examples: * <ul> * <li><tt>toUnderScoreDelimited("HelloWorld") -> "hello_world"</tt></li> * <li><tt>toUnderScoreDelimited("helloWorld") -> "hello_world"</tt></li> * </ul> */ public static String toSnakeCase(String str) { StringBuilder sb = new StringBuilder(); for (char c : str.toCharArray()) { if (Character.isLetter(c) || Character.isDigit(c)) { if (Character.isUpperCase(c)) { if (sb.length() > 0) { sb.append("_"); } sb.append(Character.toLowerCase(c)); } else { sb.append(c); } } else { sb.append("_"); } } return sb.toString(); } }