Итак, для моего предложенного решения вы должны использовать функцию в своем Java-коде, как показано ниже.
private static String cleanTextContent(String text)
{
// strips off all non-ASCII characters
text = text.replaceAll("[^\\x00-\\x7F]", "");
// erases all the ASCII control characters
text = text.replaceAll("[\\p{Cntrl}&&[^\r\n\t]]", "");
// removes non-printable characters from Unicode
text = text.replaceAll("\\p{C}", "");
text = text.replaceAll("[^ -~]","");
text = text.replaceAll("[^\\p{ASCII}]", "");
text = text.replaceAll("\\\\x\\p{XDigit}{2}", "");
text = text.replaceAll("\\n","");
text = text.replaceAll("[^\\x20-\\x7e]", "");
return text.trim();
}
После вызова этой функции вы можете использовать Apache Commons lib для преобразования строки в хэш md5 примерно так:.
private static String hashMyString(String text) {
String hashText= text;
String md5Hex = DigestUtils
.md5Hex(hashText).toUpperCase();
return md5Hex;
}
Наконец, просто сравните два хэша в вашей основной программе.
Редактировать: Если используется maven, то это библиотека, которая в основном заставляет DigestUtils работать.
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
Редактировать: Мой полный тестовый код для строки.
public class App
{
public static void main( String[] args ) throws UnsupportedEncodingException
{
String sideOneString = "Effects of BOTOX® may spread";
String sideTwoString = "Effects of BOTOX\\xc2\\xae may spread";
String sideThreeString = "BOTOX injections take about\n15 mins";
String sideFourString = "BOTOX\\xc2\\xae injections take about\\n15 mins";
System.out.println( hashMyString(cleanTextContent(sideOneString)));
System.out.println( hashMyString(cleanTextContent(sideTwoString)));
System.out.println( hashMyString(cleanTextContent(sideThreeString)));
System.out.println( hashMyString(cleanTextContent(sideFourString)));
}
private static String hashMyString(String text) {
String hashText= text;
String md5Hex = DigestUtils.md5Hex(hashText).toUpperCase();
//System.out.println(md5Hex);
return md5Hex;
}
private static String cleanTextContent(String text)
{
// strips off all non-ASCII characters
text = text.replaceAll("[^\\x00-\\x7F]", "");
// erases all the ASCII control characters
text = text.replaceAll("[\\p{Cntrl}&&[^\r\n\t]]", "");
// removes non-printable characters from Unicode
text = text.replaceAll("\\p{C}", "");
text = text.replaceAll("[^ -~]","");
text = text.replaceAll("[^\\p{ASCII}]", "");
text = text.replaceAll("\\\\x\\p{XDigit}{2}", "");
text = text.replaceAll("\\\\n","");
text = text.replaceAll("[^\\x20-\\x7e]", "");
return text.trim();
}
}
Результат:
F928A529F380EB59575AC8A175FDFE79
F928A529F380EB59575AC8A175FDFE79
B4740299C53E18C9ECAF18BA35151D43
B4740299C53E18C9ECAF18BA35151D43