2012-01-23 20 views
5

Obecnie pracuję nad projektem, w którym muszę sformatować ciąg znaków o długości tylko 10 znaków. Ale musi wystartować w określony sposób i skończyć z rosnącym kontuarem.Formatowanie ciągu znaków na 10 znaków

np numer będzie w formacie:

0100000001 
0100000002 
0100000003 
... 
0100000010 
0100000011 

Tj pierwsze dwie cyfry pozostaną niezmienione, tylko ostatnie cyfry będą się zwiększać, ale ciąg znaków musi pozostać 10 znaków.

W jaki sposób mogę to zrobić Próbowałem używać String.Format, ale nie wydaje się działać.

UPDATE Próbowałem za pomocą następującego

destination = String.Format("07000000{0}", messageCount); 

ten rodzaj robót, ale po messageCount dostaje powyżej 10 długość 11 i staje się musi nie dłużej niż 10

+0

Proszę zaksięgować kod, który próbowałem. – ChrisF

+0

jaki jest wkład i co próbowałeś? – jeroenh

+1

Czy możesz użyć licznika int dla ostatnich 8 cyfr, przekonwertować go na ciąg znaków, a następnie połączyć z dwoma pierwszymi numerami (zapisanymi jako ciąg)? – turbo

Odpowiedz

4

spróbować

String.Format("01{0:00000000}", i); 
2

Można to wykorzystać:

var counter = 11; 
var fixedPart = "01"; 
var result = fixedPart + counter.ToString().PadLeft(8,'0'); 
+0

@DownVoter: Proszę opracować, w przeciwnym razie nie mogę naprawić odpowiedzi. Tak czy inaczej, to działa tak, przetestowałem to. –

+0

Nie odrzucono, ale odgadnij, że ludzie sprzeciwiają się prowadzeniu OP od 'String.Format()' – Filburt

7

D8 oznacza formatu jako ułamek dziesiętny z maksymalnie 8 zer

string.Format("01{0}", counter.ToString("D8")); 
+5

lub nawet prostsze: 'string.Format (" 01 {0: D8} ", messageCount);' – Filburt

0

Przeprowadź tę metodę rozszerzenia ... Nie skompilowałem, ale daj mi znać, jeśli to działa :-)

public static class Ex 
{ 
    public static string ToSpecialString(this string value) 
    { 
    int desiredLength = 10; 
    string prefix = "01"; 
    string padding = new String('0', desiredLength - prefix.Length - value.Length); 
    return prefix + padding + value; 
    } 
} 

... usage ... 

Console.WriteLine("32".ToSpecialString()); 
// should output "0100000032"