【问题标题】:C# - int.Parse help?C# - int.Parse 帮助?
【发布时间】:2011-11-25 19:44:31
【问题描述】:

我正在尝试将一串字符转换为每个字符的十进制形式,并用随机选择的符号分隔它们,然后在转换之后,将十进制数字与字符串分开,然后将 1 添加到这些数字和然后将它们转换回 ASCII 字符。到目前为止,这是我所拥有的,但它一直用“int.Parse”说无效的输入格式:

public string Encode(string data, out string asciiString) {
            char[] dataArray = data.ToCharArray();
            string[] symb = {"@","#","$","%","&"};
            Random rnd = new Random();
            string newData = "";
            for(int i = 0; i < dataArray.Length; i++) {
                newData += (((int)dataArray[i] + 1) + symb[rnd.Next(0, 5)].ToString()); // add 1 to the decimal and then add symbol
            }
            asciiString = ConvertToAscii(newData);
            return newData;
        }

        public string ConvertToAscii(string data) {
            string[] tokens = data.Split('@', '#', '$', '%', '&');
            data = data.TrimEnd('@', '#', '$', '%', '&');
            string returnString = "";
            for(int i = 0; i < tokens.Length; i++){

                int num = int.Parse(tokens[i]);

                returnString += (char)num;
            }
            return returnString;
        }

这是一个例子:

正常:“你好” 用符号转换成十进制:72$101&108#108@111% 转换为 ascii(不带符号并加 1):Ifmmp(我必须使用 ascii 表)

【问题讨论】:

  • 你能给我们举个例子吗?
  • 什么是tokens[i] 当它咳出错误?
  • "Hello" 用符号转换成十进制:72$101&108#108@111% 转换成ascii(带分隔符和加1):Ifmmp
  • 一定是作业问题:-)

标签: c# string parsing int


【解决方案1】:

您应该切换这些行,以避免使用空字符串调用 Parse。

string[] tokens = data.Split('@', '#', '$', '%', '&');
data = data.TrimEnd('@', '#', '$', '%', '&');

【讨论】:

    【解决方案2】:

    int.TryParse 几乎总是处理解析为 int 的更好方法。它需要两个参数,尝试替换:

    int num = int.Parse(tokens[i]);
    

    int num;
    if (!int.TryParse(tokens[i], out num))
    {
        Debug.WriteLine(string.Format("'{0}' can't be converted to an int.", tokens[i]));
    }
    

    你会看到失败的解析发生了什么。

    【讨论】:

    • 这让我意识到它是在添加一个额外的字符,所以我按照 ChaosPandion 所说的进行了修复。
    【解决方案3】:

    data.Split 调用包含一个空字符串(检查tokens 结果)。您可以按如下方式删除空条目:

    string[] tokens = data.Split(new[] {'@', '#', '$', '%', '&'},
                               StringSplitOptions.RemoveEmptyEntries);
    

    【讨论】:

      【解决方案4】:

      你试过用吗

      string[] tokens = data.Split(new char[]{'@', '#', '$', '%', '&'},StringSplitOptions.RemoveEmptyEntries);
      

      【讨论】:

        猜你喜欢
        • 2011-10-17
        • 1970-01-01
        • 1970-01-01
        • 2011-11-26
        • 2011-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多