Here you can find the source of toUnderscore(final String input, final boolean plural)
public static String toUnderscore(final String input, final boolean plural)
//package com.java2s; /*//ww w. ja va 2s . co m * Copyright (C) 2010-2013 Axel Morgner, structr <structr@structr.org> * * This file is part of structr <http://structr.org>. * * structr 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. * * structr 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 structr. If not, see <http://www.gnu.org/licenses/>. */ public class Main { public static String toUnderscore(final String input, final boolean plural) { StringBuilder out = new StringBuilder(); for (int i = 0; i < input.length(); i++) { char c = input.charAt(i); if (Character.isUpperCase(c)) { if (i > 0) { out.append("_"); } out.append(Character.toLowerCase(c)); } else { out.append(c); } } String output = out.toString(); return plural ? plural(output) : output; } public static String plural(String type) { int len = type.length(); if (type.substring(len - 1, len).equals("y")) { return type.substring(0, len - 1) + "ies"; } else if (!(type.substring(len - 1, len).equals("s"))) { return type.concat("s"); } else { return type; } } }