【问题标题】:concatenate string to char in C#在C#中将字符串连接到char
【发布时间】:2009-07-19 06:50:12
【问题描述】:

我需要将字符串“*”连接到数组中的一个字符。

例如:

 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*****

【问题讨论】:

  • 你的问题很不清楚。请提供一些示例输入和输出。也值得一提的是大局是什么——可能有更好的方法来解决它。

标签: c# string char concatenation


【解决方案1】:

您不能将字符串连接到字符。字符串是字符的集合,不会“适合”单个字符。

你可能想要类似的东西

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

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

【讨论】:

    【解决方案2】:

    一般来说,这应该使用StringBuilder 来完成,这样可以提供更好的性能(取决于您的代码和运行时间)。
    此外,String 有一个构造函数,它接受一个字符和一个数字,并在一个字符串中给出该字符 n 次:http://msdn.microsoft.com/en-us/library/aa331867%28VS.71%29.aspx
    三、看看String.ToCharArray,如

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

    这可以为您节省一些行数。

    【讨论】:

      【解决方案3】:

      对我来说,您的示例看起来不像有效的 c#。如果您要做的只是在字符串末尾连接一堆星号,这应该可行:

      string myString = "a";
      
      for(int x = 0; x < 5; x++){
          myString += "*";
      }
      
      //myString should now equal "a*****"
      

      【讨论】:

        【解决方案4】:

        您试图将生成的字符串存储在同一个 char 数组中,这是不可能的,因为在一个 char 变量中您只能存储一个 char,您应该使用 string[]List&lt;string&gt; 来存储结果……

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

        或者,如果您可以访问 Linq to Objects:

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

        【讨论】:

          【解决方案5】:

          我认为问题在于“连接”这个词。我认为他想覆盖。这样他就可以显示一个类似字符串的半密码...

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

          .CopyTo() 会将“星号”数组写入“p”数组。以前的海报是正确的,您应该使用 StringBuilder 进行这样的操作,但是如果您必须将它作为一个字符数组,这就是这样做的方法。 (假设我明白你想要什么。“我希望结果类似于“a*****”。”)

          【讨论】:

            猜你喜欢
            • 2015-10-27
            • 1970-01-01
            • 1970-01-01
            • 2013-08-30
            • 1970-01-01
            • 1970-01-01
            • 2012-05-18
            • 1970-01-01
            • 2021-09-01
            相关资源
            最近更新 更多