Mencocokan Part Number dan Format Data ASP NET
Membuat sebuah projek ASP NET atau menggunakan Framework lainnya di sebuah perusahaan besar, apalagi perusahaan tersebut memproduksi berbagai produk dengan di dalamnya harus menggunakan part number seperti di Barcode dengan format yang ditentukan sendiri oleh perusahaan. Namun yang menjadi masalah adalah proses seperti apakah yang bisa dilakukan untuk mencocokkan data part number dengan format tersebut.
Solusi
Jika anda biasa menggunakan char.IsDigit(),
char.IsLetter, char.IsNumber atau pun the regular expression (regex). Metode-metode
tersebut sangatlah berguna, Oleh karena itu saya akan membagikan cara
penggunaan dari metode-metode tersebut dan mungkin nanti anda dapat
mengembangkannya.
Konsep
Sebelum saya membagikan source code, saya akan
menjelaskan konsep yang akan gunakan. Misalkan ada sebuah Part Number yang akan
dicocokan dengan format data yang sudah ditentukan sebelumnya. Dari Part Number
tersebut akan dilakukan loop untuk semua Format lalu dicari Format mana yang
memiliki kecocokan lebih tinggi berdasarkan jumlah character yang cocok.
Contoh.
DIketahui Part
Number: 1234AB, 54AC78, 77458A, HH994
Format
Data: NNSSNN, NNNNNS, SSNNSS, SNSNSN, SSNNN
Keterangan: N
adalah untuk menunjukkan sebuah Number atau Numeric
S adalah untuk menunjukkan sebuah String.
Pertanyaan: Sesuai apa yang disebutkan pada konsep kita akan melakukan tingkat kecocokan paling tinggi dari beberapa format.
Projek
Buatlah sebuah projeck baru di ASP NET Console
Application dengan nama “PartNumberandFormat”.
Tentukkan 2 Field Array dengan datatype string dan
isikan 2 field tersebut dengan Part Number dan Format.
String[] PartNumber = {“1234AB”, “54AC78”, “77458A”,
“HH994”}
String[] Format = {“NNSSNN”, “NNNNNS”, “SSNNSS”,
“SNSNSN”, “SSNNN”}
Jangan lupa untuk membuat field Result untuk menampung hasil format yang paling sesuai dan field integer PreviousCount dan AfterCount.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
namespace PartNumberdanFormat
{
class Program
{
static void Main(string[] args)
{
try {
Console.WriteLine("Author: AgungPanduan.com");
Console.WriteLine(DateTime.Now);
string[] PartNumber = { "1234AB", "54AC78", "77458A", "HH994" };
string[] Format = { "NNSSNN", "NNNNSS", "SSNNSS", "SNSNSN", "SSNNN" };
bool valid = true;
int PreviousCount = 0;
int AfterCount = 0;
string form = "";
string error = "";
List<string> Result = new List<string>();
foreach (string Part in PartNumber)
{
PreviousCount = 0;
error = "";
foreach (string formData in Format)
{
AfterCount = 0;
if (Part.Length != formData.Length)
{
valid = false;
}
else
{
valid = true;
if (Part != null && Part.Trim() != "")
{
for (int i = 0; i < Part.Length; i++)
{
if (formData.Substring(i, 1) == "N")
{
if (char.IsNumber(Part, i))
{
AfterCount++;
}
}
if (formData.Substring(i, 1) == "S")
{
if (char.IsLetter(Part, i))
{
AfterCount++;
}
}
}
}
//Setiap Loop Format, akan menghitung
//jumlah char yang sesuai format
//jika jumlah melebihi hasil sebelumnya
//maka format yang dipilih adalah form sekarang
}
if (PreviousCount < AfterCount && valid)
{
form = formData;
PreviousCount = AfterCount;
//Console.WriteLine(Part);
//Console.WriteLine(AfterCount);
//Console.WriteLine(formData.Length);
if (AfterCount < formData.Length) {
error = "But not quite right with total correct char is " + AfterCount;
}
else if (AfterCount == formData.Length) {
error = "";
}
valid = true;
}
}
Result.Add("Part Number: " + Part + " Using Format: " + form + " " + error);
}
foreach (string result in Result)
{
Console.WriteLine(result);
}
}
catch(Exception e) {
Console.WriteLine(e.Message);
}
}
}
}
Hasil yang ditampilkan adalah sebagai berikut;