对Char数组的字符串求和
本文关键字:字符串 求和 数组 Char | 更新日期: 2023-09-27 18:11:29
我有这两个函数,
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;
这里的问题是,这显然不起作用,它似乎也非常低效,必须有一个更简单的方法来完成所有这些,而且,我的sum不能正确地对数组元素求和。
我不完全确定如何去做这件事,任何帮助/反馈将非常感谢。
谢谢你。
如果我理解正确的话,您试图将字符串的每个字符的值加在一起,而不是从字符串中解析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")));