Java String Slugify toSlug(String input)

Here you can find the source of toSlug(String input)

Description

Convert the String input to a slug.

License

Apache License

Declaration

public static String toSlug(String input) 

Method Source Code

//package com.java2s;
/*/*from ww w. j ava 2  s.c  om*/
 ************************************************************************************
 * Copyright (C) 2001-2011 encuestame: system online surveys Copyright (C) 2011
 * encuestame Development Team.
 * Licensed under the Apache Software License version 2.0
 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to  in writing,  software  distributed
 * under the License is distributed  on  an  "AS IS"  BASIS,  WITHOUT  WARRANTIES  OR
 * CONDITIONS OF ANY KIND, either  express  or  implied.  See  the  License  for  the
 * specific language governing permissions and limitations under the License.
 ************************************************************************************
 */

import java.text.Normalizer;
import java.text.Normalizer.Form;
import java.util.Locale;
import java.util.regex.Pattern;

public class Main {
    /**
     * No latin pattern.
     */
    private static final Pattern NONLATIN = Pattern.compile("[^\\w-]");
    /**
     * Whitespace pattern.
     */
    private static final Pattern WHITESPACE = Pattern.compile("[\\s]");

    /**
     * Convert the String input to a slug.
     */
    public static String toSlug(String input) {
        if (input == null) {
            throw new IllegalArgumentException("Input cannot be null");
        }
        String nowhitespace = WHITESPACE.matcher(input).replaceAll("-");
        String normalized = Normalizer.normalize(nowhitespace, Form.NFD);
        String slug = NONLATIN.matcher(normalized).replaceAll("");
        return slug.toLowerCase(Locale.ENGLISH);
    }

    /**
     * Normalize a string
     * @param input
     * @return
     */
    private static String normalize(final String input) {
        if (input == null || input.length() == 0)
            return "";
        return Normalizer.normalize(input, Form.NFD).replaceAll("[^\\p{ASCII}]", "");
    }
}

Related

  1. slugify(String input)
  2. slugify(String input)
  3. slugify(String s)
  4. toSlug(final String input)
  5. toSlug(String input)
  6. toSlug(String s)