2009-07-19 8 views
0

Je dois concaténer '*', qui est une chaîne, en un caractère dans un tableau.concaténer la chaîne en caractère C#

Par exemple:

int count=5; 
string asterisk="*"; 
    char p[0]='a'; 
    char p[1]='b'; 
    char p[2]='a'; 
    char p[3]='b'; 
    char p[4]='b'; 
for(int i=0;i<count;i++) 
{ 
    asterisk=asterisk+"*"; 
    } 
    p[0]=p[0]+asterisk; 

Comment puis-je faire cela? Je veux que le résultat soit comme "a*****"

+4

Votre question n'est pas très claire. Veuillez donner quelques exemples d'entrées et de sorties. Il pourrait également être utile de dire ce que l'image plus grande est - il pourrait y avoir une meilleure façon de l'aborder. –

Répondre

1

Votre exemple ne me ressemble pas. Si tout ce que vous essayez de faire est de concaténer un tas d'astérisques à la fin d'une chaîne, cela devrait fonctionner:

string myString = "a"; 

for(int x = 0; x < 5; x++){ 
    myString += "*"; 
} 

//myString should now equal "a*****" 
1

Vous essayez de stocker les chaînes résultantes dans le même tableau char, et qui ne sont pas possible parce que dans une variable char vous ne pouvez stocker un char, vous devez utiliser un string[] ou un List<string> pour stocker le résultat ...

List<string> result = new List<string>(); 
string asterisk = new string('*', 5); // Get a string with five * 

foreach (char c in charArray) 
{ 
    result.Add(c + asterisk); 
} 

ou si vous avez accès à LINQ aux objets:

var result = charArray.Select(c => c + asterisk); // Select all 
                // chars and concatenate 
                // the variable 
3

Vous ne pouvez pas concaténer une chaîne à un caractère. Une chaîne est une collection de caractères, et ne "s'adaptera" pas à l'intérieur d'un seul caractère.

Vous voulez probablement quelque chose comme

char asterisk = '*'; 
string []p = new string[] { "a", "b", "a", "b" }; 

p[0] = p[0] + new string(asterisk, count); 
3

En général, cela devrait être fait en utilisant un StringBuilder, qui whould donnent de meilleures performances (en fonction de votre code et combien de temps vous l'exécutez).
Aussi, String a un constructeur qui prend char et un certain nombre, et donne cette fois ombles n dans une chaîne: http://msdn.microsoft.com/en-us/library/aa331867%28VS.71%29.aspx
Troisièmement, jetez un oeil à String.ToCharArray, comme dans

char[] chars = "abcd".ToCharArray(); 

Cela peut vous sauver quelques lignes là-bas.

1

Je pense que le problème est le mot "concaténer". Je pense qu'il veut écraser. Il peut donc montrer un demi-mot de passe comme chaîne ...

char[] p = { 'a', 'b', 'a', 'b', 'b' }; 
char[] asterisks = (new String('*', p.Length -1)).ToCharArray(); 
asterisks.CopyTo(p, 1); 

.CopyTo() va écrire le tableau « astérisques » au tableau « p ». Les affiches précédentes ont raison de dire que vous devriez utiliser StringBuilder pour une manipulation comme celle-ci, mais si vous devez l'avoir sous la forme d'un tableau de caractères, c'est la façon de le faire. (En supposant que je comprends ce que vous voulez. "Je veux que le résultat soit comme" un ***** ".")

Questions connexes