namespace HydroUI
|
{
|
|
|
[Serializable]
|
public class Parts
|
{
|
List<string> _parts = null;
|
List<string> _parts_before = null;
|
|
public int Length
|
{
|
get
|
{
|
if (_parts != null)
|
return _parts.Count;
|
else
|
return -1;
|
}
|
}
|
|
public int Count
|
{
|
get
|
{
|
if (_parts != null)
|
return _parts.Count;
|
else
|
return -1;
|
}
|
}
|
|
public Parts(string[] strings)
|
{
|
_parts = strings?.ToList();
|
}
|
|
public Parts(string line)
|
{
|
List<string> sp = line.Split(new char[] {
|
'\t', ' '
|
}, StringSplitOptions.RemoveEmptyEntries)?.ToList();
|
int pos = sp.IndexOf(";");
|
if (pos > 0)
|
{
|
_parts = new List<string>();
|
_parts_before = new List<string>();
|
for (int i = 0; i < pos; i++)
|
{
|
_parts.Add(sp[i]);
|
}
|
for (int i = pos; i < sp.Count; i++)
|
{
|
_parts_before.Add(sp[i]);
|
}
|
}
|
else
|
{
|
_parts = new List<string>();
|
_parts.AddRange(sp);
|
}
|
}
|
public string this[int index]
|
{
|
get
|
{
|
if (index < 0)
|
{
|
index = Math.Abs(index);
|
if (_parts_before != null && _parts_before.Count > index)
|
return _parts_before[index];
|
else
|
return null;
|
}
|
else
|
{
|
if (_parts != null && _parts.Count > index)
|
return _parts[index];
|
else
|
return null;
|
}
|
|
}
|
set
|
{
|
_parts[index] = value;
|
}
|
}
|
public float ToFloat(int index, float defaultValue)
|
{
|
float f = defaultValue;
|
if (this[index] != null && float.TryParse(this[index], out f))
|
{
|
|
}
|
return f;
|
}
|
public int ToInt(int index, int defaultValue)
|
{
|
int f = defaultValue;
|
if (this[index] != null && int.TryParse(this[index], out f))
|
{
|
|
}
|
return f;
|
}
|
public string ToString(int index, string defaultValue)
|
{
|
string f = defaultValue;
|
if (this[index] != null)
|
{
|
return this[index];
|
}
|
return f;
|
}
|
public bool ToBool(int index, bool defaultValue)
|
{
|
bool f = defaultValue;
|
if (this[index] != null && bool.TryParse(this[index], out f))
|
{
|
|
}
|
return f;
|
}
|
}
|
|
}
|