Merhaba.

    Console.WriteLine(string.Format("({0,5})", "ABC")); // = (  ABC)
    Console.WriteLine(string.Format("({0,-5})", "ABC")); //  = (ABC  )

Bu şekilde padding yapmada sorun yok.

Fakat şöyle birşeyi nasıl yapabilirim

string.Format("({{0}{1},10})", "ABC", "DEF) // (    ABCDEF)
string.Format("({{0} {1},10})", "ABC", "DEF) // (   ABC DEF)

alt text

Bu işlemi format ile yapmam gerekiyor. Başka yerde birleştirme şansım yok.

Yani şöyle yapamam mümkün değil.

Console.WriteLine(string.Format("({0,10})", "ABC" + " DEF"));

teşekkür ederim.

Edit:

sanalism arkadaşımın sorusuna cevaben:

Amaç istendiğinde 2 veya daha fazla parametre verildiğinde bunların birleşimini padding yapabilmek. Burada değişkenin kendisini değil de reflection edeceği objenin member name'i olduğunu tekrar hatırlatayım.

Mesela 4 farklı değişken adı verdi diyelim: "Değer1,Değer2,Değer3,Değer4".
Bunlardan 3'ünü birleştirip öyle 30 karaktere göre padding yapmak diğer dördüncüyü tek formatlamak istedi.

yani runtimeda diyelim ki reflection dan çekilen değerler şöye oldu

Değer1 = "Ahmet",

Değer2=15,

Değer3 = Rüknettin,

Değer4 '01.01.2014 00:00:00'

Hedeflenen pattern de şöyle bişey oldu "<<{{0}{1}{2}:30}>> {3:mm_DD_yyyy}"

Tabi yukarıdaki gibi bir kullanım malesef yok. Bu durumda Yukarıdaki örneğe göre hedeflenen çıktı şöyle olmalı

<< Ahmet15Rüknettin>> 01_01_2014

Ahmet15Rüknettin in toplamı 16 olacağından 30-16=14 karakterli padding oluyor böylece.

Reflection olduğu için çalışma kodlama esnasında Değişken.Length gibi birşey yazıp parametre olarak vermek sözkonuau olaamıyor haliyle.

Aslında ben farklı bir şekilde çözdüm mevcut projemde. Ve yerli yabancı bir kaç yerde aramam neticesinde evaulation dışında çözüm üretilemeyeceği sonucuna vardım ama gene de bir açıklama yapayım dedim.

Tekrar teşekkürler.

soruldu: 11 Şub '14, 03:50

Fatih's gravatar image

Fatih
51761021
cevap kabul oranı: 40%

kapatıldı: 26 Mar '14, 08:24

Bu soru 26 Mar '14, 08:24 Fatih tarafından "Bu sorunun istenen şekilde bir cevabı yok. Alternatif komplex çözümler gerekiyor." gerekçesiyle kapatıldı.


Sanırım istediğin şu: string.Format("{0,6}{1,3}", "ABC", "DEF")

Açıklaması şöyleki en başa "ABC" koy ve uzunluğunu 6 yap, ikinci sıraya (1.indexe) "DEF" koy ve uzunluğunu 3 yap.

permanent link

cevaplandı: 20 Şub '14, 08:35

osmanraifgunes's gravatar image

osmanraifgunes
2.4k81736
cevap kabul oranı: 31%

1

Evet dolaylı yoldan böyle fakat durum şu ABC ve DEF nin uzunluğunu bildiğiniz için böyle bir çözüm sundunuz. Diyeceksiniz ki length olayı ile uzunluğunu öğreniverin canım :) öyle birşey mümkün değil çünkü yukarıdaki format kullanılabilir de kullanılmayabilir de. Format stringi de metoda parametre olarak gidiyor. Yani metodun içerisinde özel format şablonları filan yok. Ayrıca length size gibi şeyleri kullamam çünkü bu metodlar önceden pattern şeklinde oluşturuluyor. Haliyle o anda reflect edilecek objenin tozu bile piyasada olmuyor :)

(21 Şub '14, 02:06) Fatih Fatih's gravatar image
1

Eğer Format patterni içerisinde "{{0}:Length{0}}" gibi bir kullanım olsaydı bu olay daha rahat çözülürdü. Ama bunlar için extra evaluate kütüphaneleri kullanılıyor malesef.

(21 Şub '14, 02:08) Fatih Fatih's gravatar image

Peki amaç en başına 6 tane boşluk koymak sonrasını yan yana yazmak mı ?

(21 Şub '14, 02:15) osmanraifgunes osmanraifgunes's gravatar image
1

ilk soruma biraz daha açıklama ekledim.

(21 Şub '14, 08:33) Fatih Fatih's gravatar image

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×238
×13
×4
×2
×2

Soruldu: 11 Şub '14, 03:50

Görüntüleme: 690 kez

Son güncelleme: 26 Mar '14, 08:24

powered by BitNami OSQA