So i have a textfile with a lot of packages "Data.Interface.4.87.2" "GuiTools.4.92.401-alpha01400" "Drivers.4.87.400-alpha01000" And i only want the numbers: So 4.87.2, 4.92.401, 4.87.400
But the problem is the GetBetween method removes the last char
Expected output : 4.92.401
Actual output : 4.92.4
Another example:
Expected output : 4.87.2
Actual output : 4.87.
Expected output : 4.87.400
Actual output : 4.87.4
Method to get everything between "package " to end of string
private string GetBetween(string strSource, string strStart, string strEnd)
{
if (strSource.Contains(strStart) && strSource.Contains(strEnd))
{
int Start, End;
Start = strSource.IndexOf(strStart, 0) + strStart.Length;
End = strSource.IndexOf(strEnd, Start);
return strSource.Substring(Start, End - Start);
}
return "";
}
private string GetPackageVersion(string line)
{
string packageinfo = GetBetween(line, "package ", line[line.Length-1].ToString());
string VersionNumber = "";
for (int i = 0; i < packageinfo.Length; i++)
{
if (char.IsDigit(packageinfo[i]) || packageinfo[i] == '.')
{
VersionNumber += packageinfo[i];
}
}
VersionNumber = ReverseString(VersionNumber);
VersionNumber = RemoveDotsFromEndofString(VersionNumber);
return ReverString(VersionNumber);
}
private string RemoveDotsFromEndofString(string line)
{
if (line.Contains("alpha"))
{
int pos = line.IndexOf("alpha");
if (pos >= 0)
{
line = line.Remove(pos);
}
for (int i = line.Length; i >= 0; i--)
{
if (line[i - 1] != '.')
{
return line;
}
line = line.Remove(i - 1, 1);
}
}
for (int i = line.Length; i >= 0; i--)
{
if (line[i - 1] != '.')
{
return line;
}
line = line.Remove(i - 1, 1);
}
return "";
}
private string ReverseString(string s)
{
char[] charArray = s.ToCharArray();
Array.Reverse(charArray);
return new string(charArray);
}