Skip to content

RFC 23667

serp83 edited this page Sep 27, 2017 · 7 revisions

RFC 23667

Данная спецификация описывает основные понятия в разработке приложений отраслевого рынка автозапчастей.

Стандартизированный артикул(номер) (numberStandart, shortArticle)

Производитель автозапчастей предлагает свою нумерацию деталей. В номерах часто можно встретить спец. символы(-,. и т.д.). Для оптимизации работы с деталями в базах данных спецсимволы убирают. Текущий тренд показывает дополнительное условие к стандартизированному номеру - большинство продавцов поднимают его еще в верхний регистр.

Храненить артикулы в БД необходимо только после стандартизации номера.

Реализации метода на разных языках: Данный метод является сильно нагруженным и крайне не рекомендуется использовать регулярные выражения.

  • 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();
          }
      
       
    
  • Go

     import (
         "fmt"
         "regexp"
         "bytes"
     )
     
     func main() {
             var re = regexp.MustCompile(`[[:punct:]]|[[:space:]]`)
      str := "тест-+*retert671/?,"
      restr := re.ReplaceAllString(str, "")
      fmt.Printf("%s", bytes.ToUpper([]byte(restr)))
     }
        
    
  • 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
          
    
    

Clone this wiki locally