//串比较 public int Compare(StringDS s) { int len = (this.GetLength() <= s.GetLength()) ? this.GetLength() : s.GetLength(); int i = 0; for (int j = 0; j < len; j++) { if (this[j] != s[j]) { i = j; break; } } if (i < len) { if (this[i] < s[i]) { return(-1); } else if (this[i] > s[i]) { return(1); } } else if (this.GetLength() == s.GetLength()) { return(0); } else if (this.GetLength() < s.GetLength()) { return(-1); } return(1); }
//串定位 public int Index(StringDS s) { if (this.GetLength() < s.GetLength()) { Console.WriteLine("There is not string s!"); return(-1); } int i = 0; int len = this.GetLength() - s.GetLength(); while (i < len) { if (this.Compare(s) == 0) { break; } } if (i <= len) { return(i); } if (i <= len) { return(i); } return(-1); }
//串连接 public StringDS Concat(StringDS s) { StringDS s1 = new StringDS(this.GetLength() + s.GetLength()); for (int i = 0; i < this.GetLength(); i++) { s1.data[i] = this[i]; } for (int j = 0; j < s.GetLength(); j++) { s1.data[this.GetLength() + j] = s.data[j]; } return(s1); }
//串插入 public StringDS Insert(int index, StringDS s) { int len = s.GetLength(); int len2 = len + this.GetLength(); StringDS s1 = new StringDS(len2); if (index < 0 || index > this.GetLength() - 1) { Console.WriteLine("Position is error"); return(null); } for (int i = 0; i < index; ++i) { s1.data[i] = this[i]; } for (int i = index; i < index + len; ++i) { s1.data[i] = s[i - index]; } for (int i = index + len; i < len2; ++i) { s1.data[i] = this[i - len]; } return(s1); }