【发布时间】:2016-12-22 23:15:33
【问题描述】:
我实际上尝试在 c# 中从头开始创建一个 StringToASCII 函数。
我从 _myString 获得输入,这是代码:
public void convertToASCII() {
//A-Z --> 65-90
//a-z --> 97-122
//0-9 --> 48-57
//Space --> 32
int[] returnString = new int[_myString.Length];
int iTableau = 0;
char iAZ = 'A';
char iaz = 'a';
char i09 = '0';
char iSpace = ' ';
for(int i = 0; i < _myString.Length; i++)
{
if(_myString[i] >= 65 && _myString[i] <= 90 || _myString[i] >= 97 && _myString[i] <= 122 || _myString[i] >= 48 && _myString[i] <= 57 || _myString[i] == 32)
{
while(iAZ < 90 || iaz < 122 || iaz < 122 || i09 < 57 || _myString[i] == 32)
{
if(_myString[i] == iAZ && iAZ >= 'A' && iAZ <= 'Z')
{
returnString[iTableau] = iAZ;
iTableau++;
iAZ--;
}
else
{
iAZ++;
}
if(_myString[i] == iaz && iaz >= 'a' && iaz <= 'z')
{
returnString[iTableau] = iaz;
iTableau++;
iaz--;
}
else
{
iaz++;
}
if(_myString[i] == i09 && i09 >= '0' && i09 <= '9')
{
returnString[iTableau] = i09;
iTableau++;
i09--;
}
else
{
i09++;
}
if(_myString[i] == iSpace)
{
returnString[iTableau] = iSpace;
iTableau++;
}
}
}
}
_myString = "";
for (int i = 0; i < returnString.Length; i++)
{
_myString += returnString[i];
}
}
我也尝试过这种可行的功能,但我想创建一个只检查 A-Z 和 a-z 以及 0-9 和空格的字符。
和第一个函数一样,我从一个名为“_myString”的全局字符串变量中获取输入。
public void convertToASCII()
{
string asciiChar;
string returnString = "";
foreach (char c in _myString)
{
asciiChar= ((int)(c)).ToString();
returnString += " " + asciiChar;
}
_myString = returnString;
}
【问题讨论】:
-
这里有问题吗?
-
“仅检查”是什么意思?您如何处理超出这些范围的字符?只是省略它们?使用替换字符?
Encoding.ASCII怎么了? -
@itsme86 首先感谢您的快速响应,我只想检查 _myString[i] 是否在这些范围内,然后我将它们放入一个数组中,然后再重新组合。跨度>
-
@itsme86 我对 Encoding.ASCII 的问题是我的编程老师告诉我,我不必使用这个函数,而是创建它。
-
您能否重组问题,使其具有一个 minimal reproducible example 来演示当前的错误行为以及您希望它如何表现?理想情况下可以复制/粘贴到控制台应用程序并进行测试的东西?您的代码无法按原样编译,请参阅 dotnetfiddle.net/ANEpTN
标签: c# string type-conversion ascii