Online bir editör'de c# yazdığım lisans yıllarımı yad etmek adına, yazayım dedim. Tamamı ile keyif amaçlı yazıyorum..
using System.IO;
using System;
using System.Collections.Generic;
public class Program
{
private List friendList = new List();
public static void Main()
{
//Örnek yeni kayıt girdisi
//0 ; isim=turgay, eposta=info@turgaycan.com, telefon=555 000 0000
string input = "0 ;isim=turgay,eposta=info@turgaycan.com,telefon=555 000 0000";
//Örnek arama girdisi
//string search = "1 : isim=turgay";
if(input.StartsWith("0")){
FriendModel model = buildFriendModel(input);
friendList.Add(model);
}else if(search.StartsWith("1")){
string revisedInputPair = revisedInput(search);
NamePairValue namePairvalue = findNamePairValue(revisedInputPair);
search(namePairValue);
}
}
private static FriendModel buildFriendModel(string input){
string isim, eposta,telefon;
string revisedInput = reviseInput(input);
string[] diziElemanlari = revisedInput.Split(',');
for(int index = 0; index < diziElemanlari.Length; index++ ){
string[] pair = diziElemanlari[index].Split('=');
for(int i = 0; i < pair.Length; i++ ){
if(pair[i].Equals("isim")){
isim = pair[1];
}else if(pair[i].Equals("eposta")){
eposta = pair[1];
}else if(pair[i].Equals("telefon")){
telefon = pair[1];
}
}
}
return new FriendModel(isim, eposta, telefon);
}
private static string revisedInput(string input){
int initIndex = -1;
int startIndex = input.IndexOf(";", initIndex + 1);
return input.Substring(startIndex + 1);
}
private static NamePairValue findNamePairValue(string revisedInput){
string[] nameValuePair = revisedInput.Split('=');
for(int i = 0; i < nameValuePair.Length; i++){
if(nameValuePair[i] == "isim"){
return new NamePairValue("isim", nameValuePair[1]);
}else if(nameValuePair[i] == "eposta"){
return new NamePairValue("eposta", nameValuePair[1]);
}else if(nameValuePair[i] == "telefon"){
return new NamePairValue("telefon", nameValuePair[1]);
}
}
return new NamePairValue();
}
private List search(NamePairValue namePairvalue){
if(namePairvalue.name.Equals("isim")){
return friendList.Find(each => each.isim.Contains(namePairvalue.Val));
}else if(namePairvalue.eposta.Equals("eposta")){
return friendList.Find(each => each.eposta.Contains(namePairvalue.Val));
}else if(namePairvalue.name.Equals("telefon")){
return friendList.Find(each => each.telefon.Contains(namePairvalue.Val));
}
return new List();
}
class NamePairValue{
private string name;
private string val;
public NamePairValue(){}
public NamePairValue(string name, string val){
this.Name = name;
this.Val = val;
}
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public string Val
{
get
{
return val;
}
set
{
val = value;
}
}
}
}
public class FriendModel : IEquatable{
public FriendModel(){}
public FriendModel(String isim, String eposta, String telefon){
this.isim = isim;
this.eposta = eposta;
this.telefon = telefon;
}
public string isim
{
get
{
return this.isim;
}
set
{
this.isim = value;
}
}
public string eposta
{
get
{
return this.eposta;
}
set
{
this.eposta = value;
}
}
public string telefon
{
get
{
return this.telefon;
}
set
{
this.telefon = value;
}
}
public bool Equals(FriendModel other){
{
if (other == null) return false;
if (this.isim.Equals(other.isim, StringComparison.InvariantCultureIgnoreCase)) return true;
if(this.eposta.Equals(other.eposta, StringComparison.InvariantCultureIgnoreCase)) return true;
if(this.telefon.Equals(other.telefon, StringComparison.InvariantCultureIgnoreCase)) return true;
return false;
}
}
}
Kodu online bir editör'de mono üzerinde yazmaya çalıştım fakat syntax hataları ve name space eksiklikleri olabilir. //Özellikle getter, setter olayı tuhaf
Kaynaklar;
https://msdn.microsoft.com/en-us/library/x0b5b5bc.aspx
http://www.dotnetcurry.com/showarticle.aspx?ID=189
http://stackoverflow.com/questions/6371150/comparing-two-strings-ignoring-case-in-c-sharp