Производитель автозапчастей предлагает свою нумерацию деталей. В номерах часто можно встретить спец. символы(-,. и т.д.). Для оптимизации работы с деталями в базах данных спецсимволы убирают.
Текущий тренд показывает дополнительное условие к стандартизированному номеру - большинство продавцов поднимают его еще в верхний регистр.
Хранить артикулы в БД необходимо только после стандартизации номера.
Реализации метода на разных языках: Данный метод является сильно нагруженным и крайне не рекомендуется использовать регулярные выражения.
PHP
function clearString($string){
return str_replace(['!','#', '$', '%', '&', "'", '*', '+', '-', '=', '?', '^','_','`', '{', '|', '}', '~', '@', '.', '[', ']'], '', filter_var($string, FILTER_SANITIZE_EMAIL));
}
JAVA
public static String getNumberStandart(String a) {
if (a == null) return "";
char[] charList = a.toCharArray();
StringBuilder stringBuilder = new StringBuilder();
char charItem;
for (int i = 0; i < charList.length; i++) {
charItem = charList[i];
if (charItem >= '\u0030' && charItem <= '\u0039' || charItem >= '\u0061' && charItem <= '\u007A'
|| charItem >= '\u0430' && charItem <= '\u044F') {
stringBuilder.append(charItem);
}
if (charItem >= '\u0041' && charItem <= '\u005A' || charItem >= '\u0410' && charItem <= '\u042F') {
stringBuilder.append(Character.toLowerCase(charItem));
//TODO не видит буквы ё, Ё
}
}
return stringBuilder.toString();
}
1C
Function NumberStandartGet(Number)
СurrentNumber = Lower(Number);
StrLen = StrLen(СurrentNumber);
NumberStandart = "";
Для Stat = 1 По StrLen Цикл
Symbol = Mid(СurrentNumber, Stat, 1);
CharCode = CharCode(Symbol);
//английские с 97 по 122 | русские с 1072 по 1103 | цифры с 48 по 57
If (CharCode >= 97 And CharCode <= 122) Or
(CharCode >= 48 And CharCode <= 57) Or
(CharCode >= 1072 And CharCode <= 1103) Then
NumberStandart = NumberStandart+String(Symbol);
EndIf;
КонецЦикла;
Return NumberStandart;
EndFunction