public int IndexOf(char value, int start, int length) { if (0 > start) { throw new ArgumentOutOfRangeException("start", ExceptionMessage.NegativeStartIndex(start)); } if (0 > length) { throw new ArgumentOutOfRangeException("length", ExceptionMessage.NegativeLength(length)); } if (start > _value.Length) { throw new ArgumentOutOfRangeException("start", ExceptionMessage.StartIndexAfterValueLength(start, ToString())); } if (start + length > _value.Length) { throw new ArgumentOutOfRangeException("length", ExceptionMessage.StartIndexAndLengthAfterValueLength(start, length, ToString())); } if (0 == _value.Length) { return(-1); } for (var i = start; i < start + length; i++) { if (this[i] == value) { return(i); } } return(-1); }
public char[] ToCharArray(int start, int length) { if (0 > start) { throw new ArgumentOutOfRangeException("start", ExceptionMessage.NegativeStartIndex(start)); } if (0 > length) { throw new ArgumentOutOfRangeException("length", ExceptionMessage.NegativeLength(length)); } if (start > _value.Length) { throw new ArgumentOutOfRangeException("start", ExceptionMessage.StartIndexAfterValueLength(start, ToString())); } if (start + length > _value.Length) { throw new ArgumentOutOfRangeException("length", ExceptionMessage.StartIndexAndLengthAfterValueLength(start, length, ToString())); } var result = new List <char>(); if (0 == length) { return(result.ToArray()); } for (var i = 0; i < length; i++) { result.Add(_value[start + i]); } return(result.ToArray()); }
public int LastIndexOf(string value, int start, int length) { if (null == value) { throw new ArgumentNullException("value"); } if (0 > start) { throw new ArgumentOutOfRangeException("start", ExceptionMessage.NegativeStartIndex(start)); } if (0 > length) { throw new ArgumentOutOfRangeException("length", ExceptionMessage.NegativeLength(length)); } if (start > _value.Length) { throw new ArgumentOutOfRangeException("start", ExceptionMessage.StartIndexAfterValueLength(start, ToString())); } if (start + length > _value.Length) { throw new ArgumentOutOfRangeException("length", ExceptionMessage.StartIndexAndLengthAfterValueLength(start, length, ToString())); } if (value.Length > length) { throw new ArgumentOutOfRangeException("length", ExceptionMessage.LengthShorterThanValueLength(length, value)); } if (0 == _value.Length) { return(-1); } if (0 == value.Length) { return(-1); } if (1 == value.Length) { return(IndexOf(value[0])); } var result = -1; var max = _value.Length - value.Length + 1; for (var i = start; i < start + max; i++) { if (_value[i] != value[0]) { continue; } for (var j = 1; j < value.Length; j++) { if (_value[i + j] != value[j]) { break; } if (j != value.Length - 1) { continue; } result = i; break; } } return(result); }