C# String girişini sorgulama

mburaktekin

Hectopat
Katılım
10 Eylül 2020
Mesajlar
4.964
Makaleler
2
Çözümler
11
Daha fazla  
Cinsiyet
Erkek
Ben C#'ı çğrenmeye başladım. İlk önce bir program yazacağım ve öğrendiklerimi o program üzerinde uygulayarak hem kendimi hem de programı geliştireceğim. Bir öğrenci kayıt programı yazıyorum ve bu programa ad yerine sayi girildiğinde hata veren bir özellik yapmak istiyorum. Kodu aşağıya bıraktım. Şu playlistte "If-Else yapısı 1" adlı videoya kadar izledim. Mümkün olduğunca basit anlatırsanız sevinirim.
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Kodum da bu:
[CODE lang="csharp" title="Program"]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{

string ad, soyad, numara;
int not1, not2, proje;
double ort;

Console.Write("İsminizi giriniz: ");
ad = Console.ReadLine();
Console.Write("Soyisminizi giriniz: ");
soyad = Console.ReadLine();

Console.WriteLine("****NOT GIRISI****");
Console.Write("1. Notu giriniz: ");
not1 = Convert.ToInt16(Console.ReadLine());
Console.Write("2. Notu Giriniz: ");
not2 = Convert.ToInt16(Console.ReadLine());
Console.Write("Proje Notunu Giriniz: ");
proje = Convert.ToInt16(Console.ReadLine());

Console.WriteLine("***NOT BILGILERI***");
ort = (not2 + not1 + proje)/4;
Console.WriteLine("1. Not: " + not1);
Console.WriteLine("2. Not: " + not2);
Console.WriteLine("Proje Notu: " + proje);
Console.WriteLine("Ortalama: "+ ort);

Console.Read();






}
}
}

[/CODE]
 
Son düzenleyen: Moderatör:
Mesela sayi_1 = 50, sayi_2 = 40 diyelim.

C#:
if (sayi_1 == sayi_2){
    Console.WriteLine("Değerler eşit");
}else if (sayi_1 > sayi_2){
    Console.WriteLine("Sayı 1 daha büyük");
}else if (sayi_1 < sayi_2){
    Console.WriteLine("Sayı 2 daha büyük");
}else{
     Console.WriteLine("Burası ise yukarıdaki değerler çalışmaz ise çalışacak kod bloğu");
}

Bunun gibi.
 
Bunun için çok basit bir yöntem var.

[CODE lang="csharp" title="C#"]string sayilar = "1234567890";

string girilen = "denem123";

for(int i = 0; i < sayilar.Length; i++){
if (girilen.Contains(sayilar))
Console.WriteLine("İsim içinde sayı olmamalı!");
}[/CODE]

İstenmeyen karakterleri bir string olarak tanımladık ve her karakter için girilen değerde Contains() kullanarak "İçeriyor mu?" mantığıyla bir arama yaptık. Eğer herhangi bir istenmeyen karakteri içeriyorsa hata döndürdük.
 
Aslında yukarıdaki arkadaşın dediğini yapmıyoruz. Bu tip şeyler için Regex kullanırız. Ama sen daha başlangıç düzeyinde olduğun için yukarıdaki kodu kullanman ve mantığını anlaman önemli.
Regex.IsMatch metodu ile karşılaştırma yapıyoruz.
şimdi bu metod nedir. kısaca; 2 parametresi var. biri gönderidigin string deger digeri ise model dedigimiz şey.
modeller şunlar
^[0-9]*$ bu sadece ve sadece rakam içermesini sağlar.
başındaki * ve $ işaretini kaldırırsan stringin ilk index değeri rakam olmalı. sonrakilere bakmaz.
mesela sen sadece harf girmesini istersen; ^[a-zA-Z]*$ kullanırsın.
Bunları internette araştırmanda fayda var. Ben bu ikisini kullanıyorum. Başka şeylerde olabilir pek bilgim yok.

karışık gelmiş olabilir. Aşağıya kendi programımdan bir örnek bırakıyorum.
 

Dosya Ekleri

  • Ekran Alıntısı.PNG
    Ekran Alıntısı.PNG
    17,3 KB · Görüntüleme: 64
Mesela sayi_1 = 50, sayi_2 = 40 diyelim.

C#:
if (sayi_1 == sayi_2){
    Console.WriteLine("Değerler eşit");
}else if (sayi_1 > sayi_2){
    Console.WriteLine("Sayı 1 daha büyük");
}else if (sayi_1 < sayi_2){
    Console.WriteLine("Sayı 2 daha büyük");
}else{
     Console.WriteLine("Burası ise yukarıdaki değerler çalışmaz ise çalışacak kod bloğu");
}

Bunun gibi.
Yok hocam benim istediğim biraz daha farklı. Programı çalıştırdığınızda önünüze "İsminizi Giriniz: " diye bir yazı çıkıyor. Bu girişe sayı girilirse programın hata vermesini istiyorum. Sizin dediğiniz şeyi kavradım. Teşekkür ederim.
Bunun için çok basit bir yöntem var.

[CODE lang="csharp" title="C#"]string sayilar = "1234567890";

string girilen = "denem123";

for(int i = 0; i < sayilar.Length; i++){
if (girilen.Contains(sayilar))
Console.WriteLine("İsim içinde sayı olmamalı!");
}[/CODE]

İstenmeyen karakterleri bir string olarak tanımladık ve her karakter için girilen değerde Contains() kullanarak "İçeriyor mu?" mantığıyla bir arama yaptık. Eğer herhangi bir istenmeyen karakteri içeriyorsa hata döndürdük.

Anlatımınızla anladım fakat şu for komutunu öğrenmem lazım. Öğrenince de programı geliştirebilirim. Teşekkür ederim.
Aslında yukarıdaki arkadaşın dediğini yapmıyoruz. Bu tip şeyler için Regex kullanırız. Ama sen daha başlangıç düzeyinde olduğun için yukarıdaki kodu kullanman ve mantığını anlaman önemli.
Regex.IsMatch metodu ile karşılaştırma yapıyoruz.
şimdi bu metod nedir. kısaca; 2 parametresi var. biri gönderidigin string deger digeri ise model dedigimiz şey.
modeller şunlar
^[0-9]*$ bu sadece ve sadece rakam içermesini sağlar.
başındaki * ve $ işaretini kaldırırsan stringin ilk index değeri rakam olmalı. sonrakilere bakmaz.
mesela sen sadece harf girmesini istersen; ^[a-zA-Z]*$ kullanırsın.
Bunları internette araştırmanda fayda var. Ben bu ikisini kullanıyorum. Başka şeylerde olabilir pek bilgim yok.

karışık gelmiş olabilir. Aşağıya kendi programımdan bir örnek bırakıyorum.
Syntax'ını bilmediğimden gözüme zor ve karmaşık geldi :D İlerleye ilerleye bunları da öğrenirim. Teşekkür ederim.
Bunun için çok basit bir yöntem var.

[CODE lang="csharp" title="C#"]string sayilar = "1234567890";

string girilen = "denem123";

for(int i = 0; i < sayilar.Length; i++){
if (girilen.Contains(sayilar))
Console.WriteLine("İsim içinde sayı olmamalı!");
}[/CODE]

İstenmeyen karakterleri bir string olarak tanımladık ve her karakter için girilen değerde Contains() kullanarak "İçeriyor mu?" mantığıyla bir arama yaptık. Eğer herhangi bir istenmeyen karakteri içeriyorsa hata döndürdük.

Hocam şu sayilar.Length nedir?
 
Son düzenleme:

Geri
Yukarı