无法将类型'char []'隐式转换为'string []'

时间:2015-05-26 07:08:59

标签: c# asp.net string char

strArr是一个完整的字符串,我正在拆分以获得不同的标题n日期,但我希望它们在字符串数组中。我申请的那一刻。 ToArray() {in string[] titl = item.Title.ToArray();}

错误消息

  

{无法将类型'string'隐式转换为'string []'}更改为   {无法隐式将'char []'类型转换为'string []'}

。类Data中的所有内容也是字符串类型

public class Data
{

    public string Date
    {
        get;
        set;
    }

    public string Title
    {
        get;
        set;
    }
}

string xml1 = Search();

string [] strArr = xml1.Split('|');

    int i,j;
Data item = new Data();

 for (i = 0; i < strArr.Count(); i = i + 2)

        {
            if (strArr[i].ToString() != "")
            {
                item.Title = strArr[i];
                string[] titl = item.Title.ToArray();
            }
        }
        for (j = 1; j < strArr.Count(); j = j + 2)
        {
            item.Date = strArr[j];
            string[] Dat = item.Date.ToArray();

        }

3 个答案:

答案 0 :(得分:1)

string.ToArray()会返回char类型数组。

由于您需要所有标题和日期,因此您应该有一个Data类型的数组:

string xml1 = Search();
string[] strArr = xml1.Split('|');

int totalitems = strArr.Length / 2; //get Titles count
Data[] items = new Data[totalitems];    //initialize array of data

for (int i = 0; i < strArr.Length; i = i + 2)
{
    //new instance of Data
    if(items[i/2] == null)
        items[i/2] = new Data();

    if (strArr[i].ToString() != "") //get title
    {
        items[i/2].Title = strArr[i];
    }
    if (strArr[i + 1].ToString() != "") //get date
    {
        items[i/2].Date = strArr[i + 1];
    }
}

您不再需要2个for循环。

答案 1 :(得分:0)

字符串上的ToArray方法为您提供字符数组。您可以使用linQ Select方法选择字符作为字符串。

string[] titl = item.Title.Select(c=>c.ToString()).ToArray();

您可能需要重新考虑如果您希望字符串数组或字符数组就像您想要字符数组一样,那么您需要将标题数组的声明从string更改为char

 char[] titl = item.Title.ToArray();

答案 2 :(得分:0)

在字符串上调用.ToArray()会返回char[],而不是string[]。这两种类型之间没有隐式转换。

要完成这项工作,请尝试以下方法:

string[] titl =
        item.Title.ToCharArray().Select(c => c.ToString()).ToArray();

根据您的评论,请尝试以下方法:

var xml1 = "X|A|Y|B|Z|C|W|D";
var strArr = xml1.Split('|');

var items =
    strArr.Where((x, n) => n % 2 == 0)
        .Zip(
            strArr.Where((x, n) => n % 2 == 1),
            (t, d) => new Data()
            {
                Title = t,
                Date = d
            })
        .ToArray();

我得到了这个结果:

result