C# 在C语言中数组中添加字符#
我想做一个简单的爱情计算器。我已经预先定义了字符的所有值,比如a=1、b=2和all。但问题是我不知道如何计算长度并逐个添加所有字符。一个简单的例子,如果a=1,b=2,z=26C# 在C语言中数组中添加字符#,c#,visual-studio-2013,C#,Visual Studio 2013,我想做一个简单的爱情计算器。我已经预先定义了字符的所有值,比如a=1、b=2和all。但问题是我不知道如何计算长度并逐个添加所有字符。一个简单的例子,如果a=1,b=2,z=26 string name = "Amélie Benoît Françoise Ågot Annbjørg"; // We transform letters with diacritics to "pure" letters (é->e, ç ->c...) string normalized = nam
string name = "Amélie Benoît Françoise Ågot Annbjørg";
// We transform letters with diacritics to "pure" letters (é->e, ç ->c...)
string normalized = name.Normalize(NormalizationForm.FormD);
var onlyLetters = normalized.Where(x => x >= 'A' && x <= 'Z' || x >= 'a' && x <= 'z');
// Note that the ø of Annbjørg will be stripped :-(
string strippedName = new string(onlyLetters.ToArray());
Console.WriteLine("Calculating for {0}", strippedName);
int sum = 0;
foreach (char ch in onlyLetters)
{
char ch2 = char.ToUpper(ch);
// char have a value... 'A' == 65, 'B' == 66 and so on,
sum += ch2 - 'A' + 1;
}
// Done
欢迎来到这个网站。这个问题不符合网站的质量标准,而且,按照你的问题的措辞,你似乎需要通过完整的课程或教程获得编程的基础知识。在这个悲伤的世界里,爱太少了。。。a=1,b=2和z=26或者你有另一张桌子?你能给我详细说明一下这行://sum+=ch2-'a'+1@TijAnManandhar让我们假设他的名字是BERNADETTE。让我们从B开始。ch2=='B'B'-'A'==1,因为'B'==66('B'具有unicode值66),'A'==65('A'具有unicode值65),66-65==1。然后我们加上1,比如1+1==2,因为你知道“A”应该是1。现在取E.ch2=='E'E'-'A'==4,因为'E'==69,'A'=65,69-65==4,4+1==5。您需要
使用System.Linq
;我无法使用此代码string normalized=name.Normalize(NormalizationForm.FormD);var onlyLetters=normalized.Where(x=>x>='A'&&x='A'&&x)我仍然不能使用normalize
public enum NORM_FORM
{
NormalizationOther = 0,
NormalizationC = 0x1,
NormalizationD = 0x2,
NormalizationKC = 0x5,
NormalizationKD = 0x6
};
[DllImport("Normaliz.dll", CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)]
public static extern int NormalizeString(NORM_FORM NormForm,
string lpSrcString,
int cwSrcLength,
StringBuilder lpDstString,
int cwDstLength);
public static string NormalizeString(string unnormalized, NORM_FORM form)
{
if (unnormalized == string.Empty)
{
return unnormalized;
}
int bufferSize = NormalizeString(form, unnormalized, unnormalized.Length, null, 0);
if (bufferSize <= 0)
{
throw new Exception(string.Format("Win32 error: {0}", Marshal.GetLastWin32Error()));
}
var sb = new StringBuilder(bufferSize);
int result = NormalizeString(form, unnormalized, unnormalized.Length, sb, bufferSize);
if (result <= 0)
{
throw new Exception(string.Format("Win32 error: {0}", Marshal.GetLastWin32Error()));
}
return sb.ToString();
}
string normalized = NormalizeString(name, NORM_FORM.NormalizationD);