ningshuxia
2025-03-26 6171f94b5ca6c804ac2892d214943ff0ac400d26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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;
        }
    }
 
}