C#检查是否安装了Java&&版本(INT)

时间:2017-09-04 13:53:08

标签: c#

我正在为我的java游戏制作启动器,我想检查是否安装了java 8,因为如果没有安装java,你就无法运行java应用程序。我在互联网上看了答案,无法找到我的问题的答案。

我当前的代码:

string temp = GetJavaVersion();
string temp2 = temp.Substring(13, temp.Length - 13);
//string temp3 = temp2.Substring(10, temp2.Length - 1);
string installPath = temp2;
ShowMessageBox(installPath, "Debug", MessageBoxButtons.OK, 
MessageBoxIcon.Information);

GetJavaVersion()方法代码:

        try
        {
            ProcessStartInfo procStartInfo =
                new ProcessStartInfo("java", "-version ");

            procStartInfo.RedirectStandardOutput = true;
            procStartInfo.RedirectStandardError = true;
            procStartInfo.UseShellExecute = false;
            procStartInfo.CreateNoWindow = true;
            Process proc = new Process();
            proc.StartInfo = procStartInfo;
            proc.Start();
            return proc.StandardError.ReadLine();

        }
        catch (Exception objException)
        {
            return null;
        }

输出:

"1.8.0_144"

问题是我得到了引号和不必要的数字。(我只需要编号8表示安装了java版本8),如果没有安装java,那么只输出0。

可以帮助任何人吗?

修改 如果我使用Regex那么我如何获得int变量的数字? 代码:

   string temp = GetJavaVersion();
   string temp2 = temp.Substring(13, temp.Length - 13);
   requiredJavaVersion = 8;
   //string temp3 = temp2.Substring(10, temp2.Length - 1);
   string regexPattern = @"([0-9]+)";
   Regex regex = new Regex(regexPattern);
   //Error comes here
   int currentVersion = Convert.ToInt32(regex.Matches("1.8.0_144")[1]); 

   if (currentVersion == requiredJavaVersion)
   {
       hasRequiredVersion = true;
   }

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式将版本分解为数字:

1

这会返回一个包含4个结果的数组:

8 0 144 8

然后获取regex.Matches("1.8.0_144")[1].Value;版本int value = int.Parse(regex.Matches("1.8.0_144")[1].Value);

要将其转换为 int ,请使用

// Initialize tooltip component
$(function () {
  $('[data-toggle="tooltip"]').tooltip()
})

// Initialize popover component
$(function () {
  $('[data-toggle="popover"]').popover()
})

答案 1 :(得分:0)

您也可以使用LINQ,因为正则表达式很昂贵:

var result = "1.8.0_144";
var version = new string(result.SkipWhile(c => c != '.')
                               .Skip(1)
                               .TakeWhile(c => Char.IsDigit(c))
                               .ToArray());
Console.WriteLine(version); // 8