如何将字符串数组连接成单个字符串?

4

情境:

我在数据库表中有一列网络名称,附带数字,例如(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",不含数字。

3
你真正想要的是什么?你的问题标题问如何加入,但你的信息是将一个字符串拆分为单个字符,并且你的例子似乎想要在'.'上拆分。 - Sysyphus
7个回答

6
这应该可以解决问题:
string joined = string.Join("", myArray);
DevComponents.DotNetBar.MessageBoxEx.Show(joined);

如果你想在合并的字符串之间放置分隔符,那么它是 string.Join() 的第一个参数。例如,要在它们之间放置一个空格:
string joined = string.Join(" ", myArray);

然而,你创建字符串数组的代码看起来是错误的。你从数据库中获取到一个所需网络的单个字符串,还是获取到一个包含所有网络的单个字符串,需要自己解析?


我想要输出类似于“Facebook”或“Twitter”的文本,但是没有数字。然而,问题并不十分清晰明确。 - Tim Schmelter
谢谢大家,几乎所有的答案都是正确的,但我最喜欢这个。 - Saeed Khan
2
你创建字符串数组的代码看起来有问题。+1 - dtb
@SaeedKhan,你的问题有点含糊不清,所以我不确定我是否真正回答了它... - Matthew Watson
抱歉,这给我返回了一个空字符串。 - Saeed Khan
如果是这样,那么 myArray 就是空的 - 这是因为它没有被正确计算出来;但一切都好了 - dtb 搞定了。 - Matthew Watson

1
如果你有一个字符串如"12. Facebook",那么你可以使用IndexOf方法Substring方法轻松地获取.后面的部分,具体操作如下:
string input = "12. Facebook";

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

0

也许你需要使用静态的 string.Join 方法?

或者

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

0

我已经尝试过并且成功了,这是答案,只需要稍微添加一下,例如: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)
                {

                }

1
这假设输入字符串始终以两位数开头(如 12.),而不是更多或更少的数字(1.1000.)。是这种情况吗? - dtb

0

或许简单点

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

演示

如果您需要一个数组:

string[] result = companiesWithoutNumber.ToArray();

0
你可以使用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);

你可以在这里尝试一下


-1
使用正则表达式
string s1 = Regex.Replace(Selected, "[^A-Za-z]", "");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接