【问题标题】:How to Join Array of string into single string?如何将字符串数组加入单个字符串?
【发布时间】:2013-06-07 06:20:59
【问题描述】:

场景: 我在数据库表中有带有数字的网络名称列表,例如 (1. Facebook, 2. Twitter, 3. MySpace, 4. hi5 ...),我从数据库中选择了一个网络 (例如 2. Twitter)。

我做了什么:

string Selected = "12.FaceBook";
int k=3;
string[] myArray = new string[Selected.Length];
for (int i = 0; i < Selected.Length; i++)
{
    myArray[i] = Selected[k].ToString();
    k++;
}

并吸了如何加入myArray并打印

DevComponents.DotNetBar.MessageBoxEx.Show("?");

我想要什么:

输出为:

"Facebook""Twitter" 没有数字。

【问题讨论】:

  • 你到底在追求什么?您的问题标题询问如何加入,但您的消息是将字符串拆分为单个字符,并且您的示例似乎想要拆分为 '.'

标签: c# arrays string algorithm


【解决方案1】:

应该这样做:

string joined = string.Join("", myArray);
DevComponents.DotNetBar.MessageBoxEx.Show(joined);

如果你想在连接的字符串之间放置一个分隔符,那就是string.Join() 的第一个参数。例如,在它们之间放置一个空格:

string joined = string.Join(" ", myArray);

但是,您首先实际创建字符串数组的代码看起来是错误的。您是从数据库中获取所需网络的单个字符串,还是获取包含您必须自己解析的所有网络的单个字符串?

【讨论】:

  • “我想要的是输出为“Facebook”或“Twitter”但没有数字”但是,这个问题根本不清楚。
  • 谢谢大家,几乎所有的答案都是正确的,但我最喜欢这个。
  • “你的代码首先实际创建字符串数组看起来不对”+1
  • @SaeedKhan 你的问题有点含糊,所以我不确定我是否真的在回答......
  • 对不起,这给了我“”字符串
【解决方案2】:

如果您有类似"12. Facebook" 的字符串,那么您可以使用IndexOf MethodSubstring Method 轻松获取. 之后的部分,如下所示:

string input = "12. Facebook";

string result = input.Substring(input.IndexOf('.') + 1)
                     .Trim();
// result == "Facebook"

【讨论】:

    【解决方案3】:

    我试过了,我成功了,这是答案,只添加了一点点,例如 Selected.Length-3 和打印输出。

    这是我的代码

    try
                    {
                        int i;
                        string output = "";
    
                        string Selected = "12.FaceBook";
                        int k = 3;
                        string[] myArray = new string[Selected.Length];
                        for (i = 0; i < Selected.Length-3; i++)
                        {
                            myArray[i] = Selected[k].ToString();
    
                            output = output + myArray[i];
                            k++;
                        }
    
    
                        DevComponents.DotNetBar.MessageBoxEx.Show(output);
                    }
                    catch (Exception ee)
                    {
    
                    }
    

    【讨论】:

    • 这假设输入字符串总是以 2 位数字开头(如 12.),而不是更多或更少的数字(1.1000.)是这样吗?
    【解决方案4】:

    也许只是

    var companiesWithNumber = new[] { "1. Facebook", "2. Twitter", "3. MySpace" };
    var companiesWithoutNumber = companiesWithNumber.Select(c => c.Split().Last());
    

    Demo

    如果你需要一个数组:

    string[] result = companiesWithoutNumber.ToArray();
    

    【讨论】:

      【解决方案5】:

      也许你需要静态字符串。加入?

      var input="12. Twiiter";
      var re=new Regex(@"(?<num>\d+)\.\s*(?<code>.+)");
      var m=re.Match(input);
      if (m.Success) Console.Write(m.Groups["code"].Value);
      

      对不起,

      var input=new []{"12. ...","9. ..."}
      var output = input.Select(x=>string.Join(x.Split(".").Skip(1),".").Trim());
      

      【讨论】:

        【解决方案6】:

        您可以使用string.Join 方法连接字符串,"string".Split 拆分数字,string.Format 添加" 撇号。

        var list = new[] {"1. Facebook", "2. Twitter", "3. MySpace"};
        
        var result = string.Join(" or ",list.Select(s => string.Format("\"{0}\"", s.Split('.')[1].Trim())).ToArray());
        DevComponents.DotNetBar.MessageBoxEx.Show(result);
        

        你可以试试here

        【讨论】:

          【解决方案7】:

          使用正则表达式

          string s1 = Regex.Replace(Selected, "[^A-Za-z]", "");
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-04-30
            • 2022-07-01
            • 2019-08-08
            • 2016-06-10
            • 1970-01-01
            • 2017-04-19
            • 1970-01-01
            相关资源
            最近更新 更多