asksuite-core
Version:
40 lines (33 loc) • 970 B
JavaScript
const _ = require('lodash');
const md5 = require('md5');
class StringUtils {
static unaccent(text) {
return text.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
}
static generateHash(text) {
const plainText = _.chain(text)
.toLower() // lowercase
.value() // get value from chain
.replace(/\s{2,}/g, ' '); // remove duplicate spaces
return md5(plainText || text);
}
static normalizeText(text) {
try {
return text
.trim()
.replace(/\s\s+/g, ' ')
.replace(/[.,\/#!$%^&*;:{}=\-_~()?@]/g, '')
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.toLowerCase();
} catch (e) {
console.error('StringUtils.normalizeText', text, e);
return text;
}
}
static hasOnlySpecialChars(text) {
const containsLettersNumbersOrSpacesRegExp = /[\p{L}\p{N}\s]/u;
return !containsLettersNumbersOrSpacesRegExp.test(text);
}
}
module.exports = StringUtils;