c # Сумма в строку массива Char - PullRequest
0 голосов
/ 14 октября 2011

Итак, у меня есть эти две функции,

public static string[] CharToHex(string str, string prefix, string delimeter)
    {
        List<string> list = new List<string>();
        foreach (char c in str)
        {
            list.Add(prefix + String.Format("{0:X2}",(int)c) + delimeter);
        }
        return list.ToArray();
    }
public static string[] StrToChar(string str, string prefix, string delimeter)
    {
        List<string> list = new List<string>();
        foreach (char c in str)
        {
            list.Add(prefix + (int)c + delimeter);
        }
        return list.ToArray();
    }

По сути, я пытаюсь показать значение Sum'd обоих возвращаемых массивов в метке.

Я создал функцию для вычисления суммы,

public static string ArraySum(int[] array)
    {
        string sum = array.Sum().ToString();
        return sum;
    }

И еще одну функцию, чтобы взять массив строк и преобразовать его в строку,

public static string StringArrayToString(string[] array)
    {
        StringBuilder builder = new StringBuilder();
        foreach (string value in array)
        {
            builder.Append(value);
        }
        return builder.ToString();
    }

Этокак я все это собираю,

        string[] dec = StrToChar(txtInput.Text, txtPrefix.Text, txtDelimiter.Text);
        string[] hex = CharToHex(txtInput.Text, txtPrefix.Text, txtDelimiter.Text);
        string decStr = StringArrayToString(dec);
        string hexStr = StringArrayToString(hex);
        int[] decCount = dec.Select(x => int.Parse(x)).ToArray();
        int[] hexCount = hex.Select(x => int.Parse(x)).ToArray();

        var builder = new StringBuilder();
        Array.ForEach(decCount, x => builder.Append(x));
        var res = builder.ToString();

        txtDecimal.Text = decStr;
        txtHex.Text = hexStr;
        lblDecimalSum.Text = res;

Проблема здесь в том, что это, очевидно, не работает, это также кажется ужасно неэффективным, должен быть более легкий способ сделать все это, а такжемоя сумма неправильно суммирует элементы массива.

Я не совсем уверен, как это сделать, и любая помощь / обратная связь будет принята с благодарностью.

Благодарю вас.

1 Ответ

4 голосов
/ 14 октября 2011

Если я вас правильно понимаю, вы пытаетесь собрать вместе значение каждого символа строки, а не анализировать int из строки и складывать их вместе.Если это так, вы можете сделать это с помощью linq:

string x = "xasdgdfhdsfh";
int sum = x.Sum(b => b);

Фактически, используя linq, вы можете выполнить все, что вы хотите:

string x = "xasdgdfhdsfh";
string delim = txtDelimiter.Text;
string prefix = txtPrefix.Text;

lblDecimalSum.Text = x.Sum(c => c).ToString();

txtDecimal.Text = 
            string.Join(delim, x.Select(c => prefix + ((int)c).ToString()));

txtHex.Text = 
            string.Join(delim, x.Select(c => prefix + ((int)c).ToString("X2")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...