我正在为我的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;
}
答案 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