我需要将'*'(这是一个字符串)连接到数组中的字符。
例如:
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;
我该怎么做?我希望结果像“a*****
”
答案 0 :(得分:3)
您无法将字符串连接到字符。字符串是一组字符,不会“适合”单个字符。
你可能想要像
这样的东西char asterisk = '*';
string []p = new string[] { "a", "b", "a", "b" };
p[0] = p[0] + new string(asterisk, count);
答案 1 :(得分:3)
通常,这应该使用StringBuilder
来完成,这样可以提供更好的性能(取决于您的代码以及运行它的时间)。
此外,String有一个构造函数,它接受一个char和一个数字,并在字符串中赋予该字符n次http://msdn.microsoft.com/en-us/library/aa331867%28VS.71%29.aspx
第三,看看String.ToCharArray
,如
char[] chars = "abcd".ToCharArray();
这可以为你节省一些时间。
答案 2 :(得分:1)
您的示例对我来说看起来不像c#。如果您要做的只是在字符串末尾连接一堆星号,这应该可行:
string myString = "a";
for(int x = 0; x < 5; x++){
myString += "*";
}
//myString should now equal "a*****"
答案 3 :(得分:1)
您正在尝试将结果字符串存储在同一个char
数组中,这是不可能的,因为在一个char变量中,您只能存储一个char,您应该使用string[]
或{ {1}}存储结果...
List<string>
或者,如果您有权访问Linq to Objects:
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);
}
答案 4 :(得分:1)
我认为问题是“连接”这个词。我想他想覆盖。所以他可以显示像字符串一样的半密码......
char[] p = { 'a', 'b', 'a', 'b', 'b' };
char[] asterisks = (new String('*', p.Length -1)).ToCharArray();
asterisks.CopyTo(p, 1);
.CopyTo()会将“asterisks”数组写入“p”数组。以前的海报是正确的,你应该像这样使用StringBuilder进行操作,但如果你必须将它作为一个字符数组,这就是这样做的方法。 (假设我明白你想要什么。“我希望结果像”a *****“。”)