UpgradeModel.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace MV485.Upgrade
  7. {
  8. public class UpgradeModel
  9. {
  10. public string VersionCode { get; set; }
  11. public string ApkName { get; set; }
  12. public string Updates { get; set; }
  13. public UpgradeModel()
  14. {
  15. }
  16. public static UpgradeModel ParseModel(string data)
  17. {
  18. var lines = data.Trim().Split(new[] { "\r\n", "\n" }, StringSplitOptions.None);
  19. var upgradeModel = new UpgradeModel();
  20. bool isReadingUpdates = false;
  21. foreach (var line in lines)
  22. {
  23. if (line.Contains("="))
  24. {
  25. var parts = line.Split(new[] { '=' }, 2);
  26. var key = parts[0].Trim();
  27. var value = parts[1].Trim();
  28. // 输出 key 的十六进制 ASCII 码,查看是否有隐形字符
  29. Console.WriteLine($"Key: '{key}' (Hex: {BitConverter.ToString(System.Text.Encoding.ASCII.GetBytes(key))})");
  30. //实际条件不成立(输出一些key的十六进制值,看看ASCII码是多少)
  31. if (key.Equals("versionCode"))
  32. {
  33. Console.WriteLine(key);
  34. }
  35. //实际条件成立
  36. if (key.Contains("versionCode"))
  37. {
  38. Console.WriteLine(key);
  39. }
  40. switch (key)
  41. {
  42. case "versionCode":
  43. upgradeModel.VersionCode = value; //int.Parse(value);
  44. break;
  45. case "zipName":
  46. upgradeModel.ApkName = value;
  47. break;
  48. case "updates":
  49. isReadingUpdates = true;
  50. break;
  51. }
  52. }
  53. else if (isReadingUpdates)
  54. {
  55. // 将 updates 后的内容直接追加到 Updates 属性
  56. upgradeModel.Updates += (upgradeModel.Updates == string.Empty ? "" : Environment.NewLine) + line.Trim();
  57. }
  58. }
  59. // 校验是否所有必需字段都已解析
  60. if (string.IsNullOrEmpty(upgradeModel.VersionCode) || string.IsNullOrWhiteSpace(upgradeModel.ApkName)
  61. || string.IsNullOrEmpty(upgradeModel.Updates))
  62. {
  63. return upgradeModel;
  64. }
  65. return upgradeModel;
  66. }
  67. //------------------------------------------------
  68. }
  69. }