import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.*;
class Ideone
{
if (value != null && !value.trim().isEmpty())
slugifiedVal = value.toLowerCase()
.replaceAll("[\\p{S}\\p{P}&&[^-]]+", "") // strips all special chars except -
.replaceAll("[\\s-]+", "-") // converts spaces/hyphens to -
.replaceAll("^-+|-+$", ""); // remove trailing/leading hyphens
return slugifiedVal;
}
{
List
<String
> strs
= Arrays.
asList("Heading with symbols *~!@#$%^&()_+-=[]{};',.<>?/",
"Heading with an asterisk*",
"Custom-id-&-stuff",
"--Custom-id-&-stuff--");
System.
out.
println("\"" + str
+ "\" => " + slugifyTitle
(str
)); }
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguKjsKCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIFN0cmluZyBzbHVnaWZ5VGl0bGUoU3RyaW5nIHZhbHVlKSB7CgkgICAgU3RyaW5nIHNsdWdpZmllZFZhbCA9IG51bGw7CgkgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgIXZhbHVlLnRyaW0oKS5pc0VtcHR5KCkpCgkgICAgICAgIHNsdWdpZmllZFZhbCA9IHZhbHVlLnRvTG93ZXJDYXNlKCkKCSAgICAgICAgICAgICAgICAucmVwbGFjZUFsbCgiW1xccHtTfVxccHtQfSYmW14tXV0rIiwgIiIpIC8vIHN0cmlwcyBhbGwgc3BlY2lhbCBjaGFycyBleGNlcHQgLQoJICAgICAgICAgICAgICAgIC5yZXBsYWNlQWxsKCJbXFxzLV0rIiwgIi0iKSAvLyBjb252ZXJ0cyBzcGFjZXMvaHlwaGVucyB0byAtCgkgICAgICAgICAgICAgICAgLnJlcGxhY2VBbGwoIl4tK3wtKyQiLCAiIik7IC8vIHJlbW92ZSB0cmFpbGluZy9sZWFkaW5nIGh5cGhlbnMKCSAgICByZXR1cm4gc2x1Z2lmaWVkVmFsOwoJfQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJTGlzdDxTdHJpbmc+IHN0cnMgPSBBcnJheXMuYXNMaXN0KCJIZWFkaW5nIHdpdGggc3ltYm9scyAqfiFAIyQlXiYoKV8rLT1bXXt9OycsLjw+Py8iLAoJCQkiSGVhZGluZyB3aXRoIGFuIGFzdGVyaXNrKiIsCgkJCSJDdXN0b20taWQtJi1zdHVmZiIsCgkJCSItLUN1c3RvbS1pZC0mLXN0dWZmLS0iKTsKCQlmb3IgKFN0cmluZyBzdHIgOiBzdHJzKQoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlwiIiArIHN0ciArICJcIiA9PiAiICsgc2x1Z2lmeVRpdGxlKHN0cikpOwoJfQp9