sağa bir bütün çizgi dize Hareketli

oy
1
        const string Duom = Text.txt;
        char[] seperators = { ' ', '.', ',', '!', '?', ':', ';', '(', ')', '\t' };
        string[] lines = File.ReadAllLines(Duom, Encoding.GetEncoding(1257));
        for (int i = 0; i < lines.Length; i++)
        {

            string GLine =   + lines[i];
            GLine = Regex.Replace(GLine, @\s+,  );
            GLine = GLine.PadRight(5, ' ');
            Console.WriteLine(GLine);
        }

Bu başında bir boşluk ekler her hat için, bir metin dosyası okur her çift ve yukarıdaki boşlukları kaldırır ve ben sağa çizgiyi taşımak istediğiniz, ancak hiçbir şey yapmaz.

Sonuç: Programın

Beklenen Sonuç:Burada

Oluştur 27/11/2018 saat 18:15
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
4

PadLeftve PadRightbelirtilen uzunluk zaten ulaşıldı eğer dizesinin başlangıç / sonuna karakterleri eklemez.

Gönderen String.PadRight için docs (vurgu benim):

Sol hizalar belirtilen bir Unicode karakteri ile sağda bunları doldurma tarafından bu dizede karakterleri yeni bir dize döndürür belirli toplam uzunluk için .

Senin dizeleri Tüm daha büyüktür 5, belirtilen toplam uzunluğu böylece PadRight / PadLeft şey yapmayacağım.

Yeni dize istediğiniz sayı olarak en az büyük olacak şekilde "Dolgu" dizesi boşluk ekleyerek (veya başka bir karakter gibi).

Bunun yerine, sadece elle dize önceki 5 boşluk ekleyin.

GLine = "     " + GLine;

Ya da daha programmaticly:

GLine = new string(' ', 5) + GLine;
Cevap 27/11/2018 saat 18:27
kaynak kullanıcı

oy
1
for (int i = 0; i < lines.Count(); i++)
        {
            string GLine = new string(' ',5*i) + lines[i];

            Console.WriteLine(GLine);
        }

Bu i ı doğru anlamak başarmak için çalışıyoruz ne olduğuna inanıyoruz sahip olduğunuz her satırda, 5 fazladan boşluk eklemek gerekir.

Cevap 27/11/2018 saat 18:31
kaynak kullanıcı

oy
1

Bu gibi döngünün gövdesini yerini alabilir:

string GLine = new string(' ', 1 + i * 5) + Regex.Replace(lines[i], @"\s+", " ");
Console.WriteLine(GLine);

Bu, her hat için 1 alan ve daha sonra 5 daha fazla boşluk ekleyecektir.

Cevap 27/11/2018 saat 18:31
kaynak kullanıcı

oy
0

Sen sahip metnin kaç çizgileri bağlı sol ped için bir sekme gerekir. Kullanım için en iyi artış i değişkendir.

string GLine = " " + lines[i];
Bu değişiklik
string GLine = new String('\t', i) + lines[i];

Bu arada, PadLeft çalışması gerekir ancak bazen bunu çalıştırmak için gereken akılda tutmak

Cevap 27/11/2018 saat 18:31
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more