我目前正在创建一个程序,它使用数组来分类文本文档中的ASCII字符.在创建阵列本身时,我很困惑,这是项目功能的关键部分.还建议我使用charfrequency对象创建数组,我知道我的代码对于这个特定的项目来说并不完全正确.我使用了另一个类似项目的代码,但不确定如何将其转换为从文件中读取文本的项目.我已经包含了我的charfrequency类代码,以供参考我正在尝试做的一般概念.我还需要以这样的格式显示结果:
H(72) = 1
e(101) = 1
l(108) = 2
o(111) = 1
.(46) = 1
Run Code Online (Sandbox Code Playgroud)
我不太了解编程,所以使用相对简单的术语进行详细解释会非常有帮助.
{
public class CharFrequency
{
private char m_character;
private long m_count;
public CharFrequency(char ch)
{
Character = ch;
Count = 0;
}
public CharFrequency(char ch, long charCount)
{
Character = ch;
Count = charCount;
}
public char Character
{
set
{
m_character = value;
}
get
{
return m_character;
}
}
public long Count
{
get
{
return m_count;
}
set
{
if (value < 0)
value = 0;
m_count = value;
}
}
public void Increment()
{
m_count++;
}
public override bool Equals(object obj)
{
bool equal = false;
CharFrequency cf = new CharFrequency('\0', 0);
cf = (CharFrequency)obj;
if (this.Character == cf.Character)
equal = true;
return equal;
}
public override int GetHashCode()
{
return m_character.GetHashCode();
}
public override string ToString()
{
String s = String.Format("Character '{0}' ({1})'s frequency is {2}", m_character, (byte)m_character, m_count);
return s;
}
}
Run Code Online (Sandbox Code Playgroud)
}
由于Unicode匹配ASCII码,您只需选择ASCII范围Enumerable.Range:
var allAscii = Enumerable.Range('\x1', 127).ToArray();
Run Code Online (Sandbox Code Playgroud)
请注意,C#/ .Net使用UTF-16(C#和UTF-16字符)来表示char,但如果您只查找ASCII范围,则不存在问题(因为ASCII覆盖了代码为1-127的字符,因此不会与代理冲突char在字符串中编码为2 的对).