C#中字符串中索引的位置

时间:2013-10-04 17:30:38

标签: c# visual-studio-2008 coding-style c#-3.0 c#-2.0

基本上,我正在制作一个包含两个部分的程序

1)将给定字符串从HEX转换为BINARY(DID IT)

我遇到问题的部分是 : -

2)在转换后的字符串中打印1的位置 例如,我转换的字符串是

1011000001001我想要打印1,3,4,10,13(这些是字符串中1的位置)

我的代码是: -

private void button1_Click(object sender,EventArgs e)

      {

        string temp = textBox1.Text;
        string binary = ConvertTOBinary(temp);
        //Console.WriteLine(binaryval);

    }

public string ConvertTOBinary(string temp)         {

        string binaryval = "";



        binaryval = Convert.ToString(Convert.ToInt64(temp, 16), 2);
        MessageBox.Show(binaryval);


        var indexes = binaryval
            .Select((c, index) => c == '1' ? index + 1 : 0)
            .Where(indexPlus1 => indexPlus1 > 0);
        var indexesText = string.Join(",", indexes);
        MessageBox.Show(indexes);

        return binaryval;


    }

我收到错误: -

1'string.Join(string,string [])'的最佳重载方法匹配'有一些无效的参数'

2':无法从'System.Collections.Generic.IEnumerable'转换为'string []'

3'System.Windows.Forms.MessageBox.Show(string)'的最佳重载方法匹配有一些无效的参数C:\ Documents and Settings \ Hamza \ My Documents \ Visual Studio 2008 \ Projects \ Import-Compare \ Import-Compare \ Parser.cs 46 13导入 - 比较 错误

4参数'1':无法从'System.Collections.Generic.IEnumerable'转换为'string'

请帮助!! :(

1 个答案:

答案 0 :(得分:0)

Linq是一件很棒的事情,但有时以“ole school”的方式做事更容易,更重要的是更清楚:

        var test = "1011000001001";
        var answer = new StringBuilder();

        var ix = test.IndexOf('1');
        while (ix > -1) {
            ix = ix + 1;
            answer.AppendFormat("{0},", ix);
            ix = test.IndexOf('1', ix);
            }
        var counts = answer.ToString().TrimEnd(new char[] { ',' });
        Console.WriteLine(counts);

请记住,有一天您可能必须返回该代码并弄清楚它的作用。