C# nasıl ayırırım?

volgan

Asistan
Katılım
6 Aralık 2010
Mesajlar
408
Reaksiyon puanı
1
Puanları
0
Bir string var , mesela: 55+2*(135/5)-4 .Bu string'i 55 i + yı 2 yi * i sıralı bir şekilde bir liste veya diziye nasıl atarım?
55
+
2
*
(
135
/
5
)
-
4
gibi
 

xlorxlarge

Asistan
Katılım
28 Şubat 2011
Mesajlar
224
Reaksiyon puanı
1
Puanları
18
Tam anlamadım ama
\n yada Array.sort komutu olabilir
 

totleben

Asistan
Katılım
25 Mayıs 2007
Mesajlar
291
Reaksiyon puanı
0
Puanları
16
Kod biraz iğrenç ama idare edersin artık :)

Kod:
var aa = "55+2*(135/5)-4".Replace("+", " + ").Replace("*", " * ").Replace("/", " / ").Replace("-", " - ").Replace("(", " ( ").Replace(")", " ) ").Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var item in aa)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
 

ozkan370

Öğrenci
Katılım
22 Mart 2007
Mesajlar
99
Reaksiyon puanı
4
Puanları
0
adam önce çıkarma işlemi yaparsa ne olacak
 
Katılım
31 Aralık 2007
Mesajlar
17,485
Reaksiyon puanı
188
Puanları
63
azıcık dolambaçlı da olsa yapılabilir. operatörlerin başına sonuna ekstra karakter eklenip o karakterlerden split edilip istenilen elde edilebilir. tabi arada bir array içinde boş veriler çıkabilir, onları da remove ederek istenilene kavuşulur...
 

anamur

Asistan
Katılım
27 Haziran 2008
Mesajlar
357
Reaksiyon puanı
3
Puanları
18
Umarım işini görür.
Kod:
 string ilkDeger = txtString.Text;//Textbox'a değer giriyorsun Örnek:45-34+12*45
 string parcalanmişDeger=null;
//String değerini tek tek bakıp ona göre işlem yapıyor
    for (int i = 0; i < ilkDeger.Length; i++)
    {
        if (ilkDeger[i] == '+' || ilkDeger[i] == '*' || ilkDeger[i] == '-' || ilkDeger[i] == '/' || ilkDeger[i] == '(' || ilkDeger[i] == ')' || ilkDeger[i] == '{' || ilkDeger[i] == '}')
        {
            parcalanmişDeger += "\n"+ilkDeger[i].ToString()+"\n";
        }
        else
        {
            parcalanmişDeger += ilkDeger[i].ToString();
        }
    }
    MessageBox.Show(parcalanmişDeger);
 

volgan

Asistan
Katılım
6 Aralık 2010
Mesajlar
408
Reaksiyon puanı
1
Puanları
0
Umarım işini görür.
Kod:
 string ilkDeger = txtString.Text;//Textbox'a değer giriyorsun Örnek:45-34+12*45
 string parcalanmişDeger=null;
//String değerini tek tek bakıp ona göre işlem yapıyor
    for (int i = 0; i < ilkDeger.Length; i++)
    {
        if (ilkDeger[i] == '+' || ilkDeger[i] == '*' || ilkDeger[i] == '-' || ilkDeger[i] == '/' || ilkDeger[i] == '(' || ilkDeger[i] == ')' || ilkDeger[i] == '{' || ilkDeger[i] == '}')
        {
            parcalanmişDeger += "\n"+ilkDeger[i].ToString()+"\n";
        }
        else
        {
            parcalanmişDeger += ilkDeger[i].ToString();
        }
    }
    MessageBox.Show(parcalanmişDeger);


bu çok haneli sayılarda sıkıntı olur ama.






---------- Post added at 13:01 ---------- Previous post was at 12:54 ----------

Kod biraz iğrenç ama idare edersin artık :)

Kod:
var aa = "55+2*(135/5)-4".Replace("+", " + ").Replace("*", " * ").Replace("/", " / ").Replace("-", " - ").Replace("(", " ( ").Replace(")", " ) ").Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var item in aa)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();


kardeş böyle olur gibi hemen deniyorum

edit: denedim ilgilenen herkese teşekkürler
 

annttiigs

Profesör
Katılım
7 Şubat 2007
Mesajlar
2,589
Reaksiyon puanı
24
Puanları
38
buna bir çözüm de stack kullanmaktır. C#'da stack diye bir api class var mıdır bilmiyorum ama tam ona uygulamalık.
 
Üst