-->
ZDIRY-TUFWT-EBONM-EYJ00-IDBLANTER.COM
ZDIRY-TUFWT-EBONM-EYJ00

BLANTERWISDOM105

Mencocokan Part Number dan Format Data ASP NET

11/19/2020

Problem

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;

Share This :

0 Comments