2016-03-23 18 views
0

Unity ve C# kullanıyorum ve her X karakterine bir "/" eklemek için stringbuilder'ın nasıl kullanılacağını bilmiyorum. Kodum var ve aşağıdaki kodla bir diziden bir dize oluşturabilir ve her dizeden sonra bir virgül ekleyebilirim, fakat her bir x dizgiden sonra "/" ekleyeceğim "0" (Nasıl C# stringbuilder içinde her X eklenir

) "122342" yi "1,2,2, /, 3,4,2". Şu anda dönüştürmek etmemek için "1,2,2,3,4,2" bu kod i Bir sağlayan bir for döngü kullanarak dizeleri dizisi, adımlayabilirsiniz zaten

StringBuilder Builtstring = new StringBuilder(); 
foreach(string griditem in tobuild){ 

    Builtstring.Append(griditem).Append(","); 

} 
built = Builtstring.ToString(); 
+0

Her dizeden sonra virgül ekliyorsunuz, her bir karakter değil. Ayrıca (ve daha da önemlisi) bazı örnek giriş ve örnek çıktıları sağlayabilir misiniz, böylelikle eğik çizgi eklenmeden önce ve sonra dizenin neye benzemesi gerektiğini görebiliriz? –

+0

istek başına örnek çıktı ekledi. char da dizgiyi değiştirdi. –

+0

Aşağıdaki cevabım bunu yapacağız - ancak bir ',' - son ',' –

cevap

1

Bir FOR döngüsünü kullanın ve ardından karakterin istenen bazı NTH karakterlerinin bir faktörü olup olmadığını kontrol edin. Eğer öyleyse ekstra '/' ekleyin.

+0

Bu iyi çalışıyor –

0

var olduğunu indeks.
Her yineleme için, dizideki son dizeye hala erişemediğimiz durumda, geçerli dizgiyi StringBuilder'a ek olarak ',' öğesine ekleyin.
Ayrıca, x dizeleri sonra bir '/' ekleyin. % (modulus) operatörünü kullanarak x dizelerine ulaştığımızı biliyoruz.
Döngüyü index = 1'den başlattığımı farkettim. Bunu, herhangi bir pozitif sayıya sahip 0 değeri için modulus operatörü 0, yani '/' karakterini ilk sözcükten sonra ekleyeceğimiz bir şey vereceğinden yapıyorum. Mutlaka istemek.

static void Insert(StringBuilder b, int x, string[] tobuild) 
{ 
    for(var index = 1; index < tobuild.Length; ++index) 
    { 
     b.Append(tobuild[index]); 

     if(index != tobuild.Length -1) 
     { 
      b.Append(","); 
     } 

     if(0 == index % x) 
     { 
      b.Append("/"); 
     } 
    } 
} 
0

Karakteri değerlendirmek için bir if deyimi ekleyin ve sonra uygun şekilde davranın. Ya da bir eğik çizgi koymadan önce aslında belirli sayıda karakteri saymak isterseniz bunu yapabilirsiniz.

int count = 10; 
int position = 0; 
StringBuilder Builtstring = new StringBuilder(); 
foreach(string griditem in tobuild){ 
if(position == count) { Builtstring.Append(griditem).Append(@"/"); position = 0; } 
else{Builtstring.Append(griditem).Append(","); position++;}} 
built = Builtstring.ToString(); 
İlgili konular