这是我如何获得两个字母之间的英文字母序列,但它只适用于英语。有人知道我怎么能做同样的事情,但对于俄语字母。我应该以某种方式使用Unicode表示吗?如果您做了类似的事情,请在这里告诉我。我们
public static int aMatrixDim = 10;
public static byte aFirstChar = (byte) 'a';
public static byte aLastChar = (byte) 'z';
public static int aCharsCount = aLastChar - aFirstChar + 1;
public PatternsCollection CreateTrainingPatterns(Font font)
{
var result = new PatternsCollection(aCharsCount, aMatrixDim*aMatrixDim, aCharsCount);
for (var i = 0; i < aCharsCount; i++)
{
var aBitMatrix = CharToBitArray(Convert.ToChar(aFirstChar + i), font, aMatrixDim, 0);
for (var j = 0; j < aMatrixDim*aMatrixDim; j++)
result[i].Input[j] = aBitMatrix[j];
result[i].Output[i] = 1;
}
return result;
}
答案 0 :(得分:2)
在List<char>
中获取Cryllic大写字符(范围0410到042F):
char CRYLLIC_CAPITAL_START = '\x0410';
char CRYLLIC_CAPITAL_END = '\x042F';
List<char> cryllicCapitalCharacters = new List<char>();
for (char c = CRYLLIC_CAPITAL_START; c <= CRYLLIC_CAPITAL_END; c++)
{
cryllicCapitalCharacters.Add(c);
}
或者使用 Linq :
cryllicCapitalCharacters = Enumerable.Range('\x0410', '\x042F' - '\x0410' + 1)
.Select(x => (char)x).ToList();
要对小写字母执行相同操作,请使用0430
至044F
俄语Unicode来源:https://en.wikipedia.org/wiki/Cyrillic_script_in_Unicode
答案 1 :(得分:1)
Unicode将32 out of 33俄语字母定义为连续范围
从0x0410
到0x042F
(对于大写字母)和从0x0430
到0x044F
(对于小写字母)。缺失的字母Ё
/ё
包含代码0x0401
/ 0x0451
。
因此,要构建俄语字母列表,您可以迭代这些范围并添加缺少的Ё
/ ё
。如果您需要按字母顺序排列字母,则需要进行额外的排序操作:
var russianSmall = Enumerable.Range(0x0430, 32)
.Concat(new[] { 0x0451 })
.Select(i => Convert.ToChar(i))
.ToList();
var russianSmallOrdered = russianSmall
.OrderBy(c => c.ToString(), StringComparer.Create(new CultureInfo("ru-RU"), false))
.ToList();
var russianCapital = Enumerable.Range(0x410, 32)
.Concat(new[] { 0x0401 })
.Select(i => Convert.ToChar(i))
.ToList();
var russianCapitalOrdered = russianCapital
.OrderBy(c => c.ToString(), StringComparer.Create(new CultureInfo("ru-RU"), false))
.ToList();