C# 在C语言中数组中添加字符#

C# 在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

我想做一个简单的爱情计算器。我已经预先定义了字符的所有值,比如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 = 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);