singrdk/base/Applications/Runtime/Full/System/Text/RegularExpressions/regexcapture.cs

113 lines
3.5 KiB
C#
Raw Normal View History

2008-03-05 09:52:00 -05:00
//------------------------------------------------------------------------------
2008-11-17 18:29:00 -05:00
// Copyright (c) 2002 Microsoft Corporation. All rights reserved.
2008-03-05 09:52:00 -05:00
//------------------------------------------------------------------------------
// Capture is just a location/length pair that indicates the
// location of a regular expression match. A single regexp
// search may return multiple Capture within each capturing
// RegexGroup.
//
2008-11-17 18:29:00 -05:00
namespace System.Text.RegularExpressions
{
2008-03-05 09:52:00 -05:00
//| <include file='doc\RegexCapture.uex' path='docs/doc[@for="Capture"]/*' />
/// <devdoc>
2008-11-17 18:29:00 -05:00
/// <para>
2008-03-05 09:52:00 -05:00
/// Represents the results from a single subexpression capture. The object represents
/// one substring for a single successful capture.</para>
/// </devdoc>
2008-11-17 18:29:00 -05:00
//[ Serializable() ]
2008-03-05 09:52:00 -05:00
public class Capture {
internal String _text;
internal int _index;
internal int _length;
internal Capture(String text, int i, int l) {
_text = text;
_index = i;
_length = l;
}
// The index of the beginning of the matched capture
//| <include file='doc\RegexCapture.uex' path='docs/doc[@for="Capture.Index"]/*' />
/// <devdoc>
/// <para>Returns the position in the original string where the first character of
/// captured substring was found.</para>
/// </devdoc>
public int Index {
get {
return _index;
}
}
// The length of the matched capture
//| <include file='doc\RegexCapture.uex' path='docs/doc[@for="Capture.Length"]/*' />
/// <devdoc>
/// <para>
/// Returns the length of the captured substring.
/// </para>
/// </devdoc>
public int Length {
get {
return _length;
}
}
//| <include file='doc\RegexCapture.uex' path='docs/doc[@for="Capture.Value"]/*' />
/// <devdoc>
/// <para>[To be supplied.]</para>
/// </devdoc>
public string Value {
get {
return _text.Substring(_index, _length);
}
}
// The capture as a string
//| <include file='doc\RegexCapture.uex' path='docs/doc[@for="Capture.ToString"]/*' />
/// <devdoc>
/// <para>
2008-11-17 18:29:00 -05:00
/// Returns
2008-03-05 09:52:00 -05:00
/// the substring that was matched.
/// </para>
/// </devdoc>
override public String ToString() {
return Value;
}
// The original string
internal String GetOriginalString() {
return _text;
}
// The substring to the left of the capture
internal String GetLeftSubstring() {
return _text.Substring(0, _index);
}
// The substring to the right of the capture
internal String GetRightSubstring() {
return _text.Substring(_index + _length, _text.Length - _index - _length);
}
#if DBG
internal virtual String Description() {
StringBuilder Sb = new StringBuilder();
Sb.Append("(I = ");
Sb.Append(_index);
Sb.Append(", L = ");
Sb.Append(_length);
Sb.Append("): ");
Sb.Append(_text, _index, _length);
return Sb.ToString();
}
#endif
}
}