1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- using System;
- using System.Text.RegularExpressions;
- namespace SharpCifs.Util.Sharpen
- {
- internal class Matcher
- {
- private int _current;
- private MatchCollection _matches;
- private Regex _regex;
- private string _str;
- internal Matcher (Regex regex, string str)
- {
- this._regex = regex;
- this._str = str;
- }
- public int End ()
- {
- if ((_matches == null) || (_current >= _matches.Count)) {
- throw new InvalidOperationException ();
- }
- return (_matches[_current].Index + _matches[_current].Length);
- }
- public bool Find ()
- {
- if (_matches == null) {
- _matches = _regex.Matches (_str);
- _current = 0;
- }
- return (_current < _matches.Count);
- }
- public bool Find (int index)
- {
- _matches = _regex.Matches (_str, index);
- _current = 0;
- return (_matches.Count > 0);
- }
- public string Group (int n)
- {
- if ((_matches == null) || (_current >= _matches.Count)) {
- throw new InvalidOperationException ();
- }
- Group grp = _matches[_current].Groups[n];
- return grp.Success ? grp.Value : null;
- }
- public bool Matches ()
- {
- _matches = null;
- return Find ();
- }
- public string ReplaceFirst (string txt)
- {
- return _regex.Replace (_str, txt, 1);
- }
- public Matcher Reset (CharSequence str)
- {
- return Reset (str.ToString ());
- }
- public Matcher Reset (string str)
- {
- _matches = null;
- this._str = str;
- return this;
- }
- public int Start ()
- {
- if ((_matches == null) || (_current >= _matches.Count)) {
- throw new InvalidOperationException ();
- }
- return _matches[_current].Index;
- }
- }
- }
|