Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// Извлекает подстроку из строки. Подстрока начинается с конца позиции подстроки <paramref name="left"/> и до конца строки. Поиск начинается с заданной позиции.
- /// </summary>
- /// <param name="str">Строка, в которой будет поиск подстроки.</param>
- /// <param name="left">Строка, которая находится слева от искомой подстроки.</param>
- /// <param name="startIndex">Позиция, с которой начинается поиск подстроки. Отсчёт от 0.</param>
- /// <param name="comparsion">Одно из значений перечисления, определяющее правила поиска.</param>
- /// <returns>Найденая подстрока, иначе пустая строка.</returns>
- /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="left"/> равно <see langword="null"/>.</exception>
- /// <exception cref="System.ArgumentException">Значение параметра <paramref name="left"/> является пустой строкой.</exception>
- /// <exception cref="System.ArgumentOutOfRangeException">
- /// Значение параметра <paramref name="startIndex"/> меньше 0.
- /// -или-
- /// Значение параметра <paramref name="startIndex"/> равно или больше длины строки <paramref name="str"/>.
- /// </exception>
- public static string Substring(this string str, string left,
- int startIndex, StringComparison comparsion = StringComparison.Ordinal)
- {
- if (string.IsNullOrEmpty(str)) return string.Empty;
- #region Проверка параметров
- if (left == null) throw new ArgumentNullException("left");
- if (left.Length == 0) throw new ArgumentException("left");
- if (startIndex < 0) throw new ArgumentException("startIndex");
- if (startIndex >= str.Length) throw new ArgumentOutOfRangeException("startIndex");
- #endregion
- // Ищем начало позиции левой подстроки.
- int leftPosBegin = str.IndexOf(left, startIndex, comparsion);
- if (leftPosBegin == -1) return string.Empty;
- // Вычисляем конец позиции левой подстроки.
- int leftPosEnd = leftPosBegin + left.Length;
- // Вычисляем длину найденной подстроки.
- int length = str.Length - leftPosEnd;
- return str.Substring(leftPosEnd, length);
- }
- /// <summary>
- /// Извлекает подстроку из строки. Подстрока начинается с конца позиции подстроки <paramref name="left"/> и до конца строки.
- /// </summary>
- /// <param name="str">Строка, в которой будет поиск подстроки.</param>
- /// <param name="left">Строка, которая находится слева от искомой подстроки.</param>
- /// <param name="comparsion">Одно из значений перечисления, определяющее правила поиска.</param>
- /// <returns>Найденая подстрока, иначе пустая строка.</returns>
- /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="left"/> равно <see langword="null"/>.</exception>
- /// <exception cref="System.ArgumentException">Значение параметра <paramref name="left"/> является пустой строкой.</exception>
- public static string Substring(this string str, string left, StringComparison comparsion = StringComparison.Ordinal)
- {
- return Substring(str, left, 0, comparsion);
- }
- /// <summary>
- /// Извлекает подстроку из строки. Подстрока ищется между двумя заданными строками, начиная с заданной позиции.
- /// </summary>
- /// <param name="str">Строка, в которой будет поиск подстроки.</param>
- /// <param name="left">Строка, которая находится слева от искомой подстроки.</param>
- /// <param name="right">Строка, которая находится справа от искомой подстроки.</param>
- /// <param name="startIndex">Позиция, с которой начинается поиск подстроки. Отсчёт от 0.</param>
- /// <param name="comparsion">Одно из значений перечисления, определяющее правила поиска.</param>
- /// <returns>Найденая подстрока, иначе пустая строка.</returns>
- /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="left"/> или <paramref name="right"/> равно <see langword="null"/>.</exception>
- /// <exception cref="System.ArgumentException">Значение параметра <paramref name="left"/> или <paramref name="right"/> является пустой строкой.</exception>
- /// <exception cref="System.ArgumentOutOfRangeException">
- /// Значение параметра <paramref name="startIndex"/> меньше 0.
- /// -или-
- /// Значение параметра <paramref name="startIndex"/> равно или больше длины строки <paramref name="str"/>.
- /// </exception>
- public static string Substring(this string str, string left, string right, int startIndex, StringComparison comparsion = StringComparison.Ordinal)
- {
- if (string.IsNullOrEmpty(str)) return string.Empty;
- #region Проверка параметров
- if (right == null) throw new ArgumentNullException("right");
- if (right.Length == 0) throw new ArgumentException("right");
- if (startIndex < 0) throw new ArgumentException("startIndex");
- if (startIndex >= str.Length) throw new ArgumentOutOfRangeException("startIndex");
- #endregion
- int leftPosBegin = startIndex;
- // Ищем начало позиции левой подстроки.
- if (!string.IsNullOrEmpty(left)) { leftPosBegin = str.IndexOf(left, startIndex, comparsion); }
- else
- { left = string.Empty; }
- if (leftPosBegin == -1) return string.Empty;
- // Вычисляем конец позиции левой подстроки.
- int leftPosEnd = leftPosBegin + left.Length;
- // Ищем начало позиции правой подстроки.
- int rightPos = str.IndexOf(right, leftPosEnd, comparsion);
- if (rightPos == -1) return string.Empty;
- // Вычисляем длину найденной подстроки.
- int length = rightPos - leftPosEnd;
- return str.Substring(leftPosEnd, length);
- }
- /// <summary>
- /// Извлекает подстроку из строки. Подстрока ищется между двумя заданными строками.
- /// </summary>
- /// <param name="str">Строка, в которой будет поиск подстроки.</param>
- /// <param name="left">Строка, которая находится слева от искомой подстроки.</param>
- /// <param name="right">Строка, которая находится справа от искомой подстроки.</param>
- /// <param name="comparsion">Одно из значений перечисления, определяющее правила поиска.</param>
- /// <returns>Найденая подстрока, иначе пустая строка.</returns>
- /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="left"/> или <paramref name="right"/> равно <see langword="null"/>.</exception>
- /// <exception cref="System.ArgumentException">Значение параметра <paramref name="left"/> или <paramref name="right"/> является пустой строкой.</exception>
- public static string Substring(this string str, string left, string right, StringComparison comparsion = StringComparison.Ordinal)
- {
- return str.Substring(left, right, 0, comparsion);
- }
- /// <summary>
- /// Извлекает подстроку из строки. Подстрока ищется между двумя заданными строками.
- /// </summary>
- /// <param name="str">Строка, в которой будет поиск подстроки.</param>
- /// <param name="left">Строка, которая находится слева от искомой подстроки.</param>
- /// <param name="right">Строка, которая находится справа от искомой подстроки.</param>
- /// <param name="includeBorder">Включиь в результат подстроки слева и справа от искомой.</param>
- /// <param name="comparsion">Одно из значений перечисления, определяющее правила поиска.</param>
- /// <returns>Найденая подстрока, иначе пустая строка.</returns>
- /// <exception cref="System.ArgumentNullException">Значение параметра <paramref name="left"/> или <paramref name="right"/> равно <see langword="null"/>.</exception>
- /// <exception cref="System.ArgumentException">Значение параметра <paramref name="left"/> или <paramref name="right"/> является пустой строкой.</exception>
- public static string Substring(this string str, string left, string right, bool includeBorder, StringComparison comparsion = StringComparison.Ordinal)
- {
- if (string.IsNullOrEmpty(str)) return string.Empty;
- #region Проверка параметров
- if (left == null) throw new ArgumentNullException(nameof(left));
- if (left.Length == 0) throw new ArgumentException(nameof(left));
- if (right == null) throw new ArgumentNullException(nameof(right));
- if (right.Length == 0) throw new ArgumentException(nameof(right));
- #endregion
- // Ищем начало позиции левой подстроки.
- int leftPosBegin = str.IndexOf(left, 0, comparsion);
- if (leftPosBegin == -1) return string.Empty;
- // Вычисляем конец позиции левой подстроки.
- int leftPosEnd = leftPosBegin + left.Length;
- // Ищем начало позиции правой подстроки.
- int rightPos = str.LastIndexOf(right, comparsion);
- if (rightPos == -1) return string.Empty;
- // Вычисляем длину найденной подстроки.
- if (!includeBorder)
- {
- int length = rightPos - leftPosEnd;
- return str.Substring(leftPosEnd, length);
- }
- else
- {
- int length = rightPos - leftPosEnd + right.Length + left.Length;
- return str.Substring(leftPosBegin, length);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement