C# 对 Char 数组的字符串进行求和

Clu*_*Clu 1 c# arrays sum

所以我有这两个功能,

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();
    }
Run Code Online (Sandbox Code Playgroud)

基本上,我试图在标签中显示两个返回数组的总和值。

我创建了一个函数来计算总和,

public static string ArraySum(int[] array)
    {
        string sum = array.Sum().ToString();
        return sum;
    }
Run Code Online (Sandbox Code Playgroud)

另一个函数获取字符串数组并将其转换为字符串,

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

这就是我将它们组合在一起的方式

        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;
Run Code Online (Sandbox Code Playgroud)

这里的问题是,这显然不起作用,它看起来效率也非常低,必须有一种更简单的方法来完成所有这一切,而且,我的总和没有正确地总结数组元素。

我不完全确定如何去做这件事,任何帮助/反馈将不胜感激。

非常感谢你。

Chr*_*ens 5

如果我理解正确的话,您正在尝试将字符串的每个字符的值加在一起,而不是从字符串中解析 int 并将它们加在一起。如果是这种情况,您可以使用 linq 来完成:

string x = "xasdgdfhdsfh";
int sum = x.Sum(b => b);
Run Code Online (Sandbox Code Playgroud)

事实上,使用 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")));
Run Code Online (Sandbox Code Playgroud)