2009-07-19 6 views
0

Ich muss '*', die eine Zeichenfolge ist, zu einem Zeichen in einem Array verketten.verketten Zeichenfolge zu char in C#

Zum Beispiel:

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; 

Wie kann ich das tun? Ich möchte, dass das Ergebnis wie folgt aussieht: "a*****"

+4

Ihre Frage ist sehr unklar. Bitte geben Sie einige Beispieleingänge und -ausgänge an. Es könnte sich auch lohnen zu sagen, was das größere Bild ist - es könnte einen besseren Weg geben, es zu erreichen. –

Antwort

1

Ihr Beispiel sieht für mich nicht wie gültiges C# aus. Wenn alle Sie versuchen zu tun, eine Reihe von Sternchen am Ende eines Strings verketten, sollte diese Arbeit:

string myString = "a"; 

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

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

Sie versuchen, die resultierenden Strings in dem gleichen char Array zu speichern, und das ist nicht möglich, weil in einer char-Variable nur ein Zeichen speichern kann, sollten Sie eine string[] oder ein List<string> verwenden das Ergebnis zu speichern ...

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); 
} 

oder wenn Sie den Zugriff auf Linq müssen Objekte:

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

Sie können eine Zeichenfolge nicht mit einem Zeichen verketten. Eine Zeichenfolge ist eine Sammlung von Zeichen und passt nicht in ein einzelnes Zeichen.

Sie wahrscheinlich wie etwas wollen

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

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

Im Allgemeinen sollte dies ein StringBuilder erfolgen verwenden, die bessere Leistungen geben whould (abhängig von Ihrem Code und wie viele Zeit, die Sie laufen).
Außerdem hat String einen Konstruktor, der ein Zeichen und eine Zahl nimmt und gibt, dass in einem String char n-mal: http://msdn.microsoft.com/en-us/library/aa331867%28VS.71%29.aspx
Drittens einen Blick auf String.ToCharArray haben, wie in

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

Diese können Sie sparen einige Zeilen dort.

1

Ich denke, das Problem ist das Wort "verketten". Ich denke, er möchte überschreiben. So kann er ein halb-Passwort wie String zeigt ...

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

.CopyTo() wird das "Sternchen" Array an den "p" Array schreiben. Frühere Poster sind richtig darin, dass Sie StringBuilder für Manipulationen wie diese verwenden sollten, aber wenn Sie es als ein Array von Zeichen haben müssen, ist dies der Weg, es zu tun. (Angenommen, ich verstehe, was Sie wollen. "Ich möchte, dass das Ergebnis wie" a ***** "ist.)