singrdk/base/Kernel/System/Text/RegularExpressions/regexcapture.cs

116 lines
3.5 KiB
C#

//------------------------------------------------------------------------------
// <copyright company='Microsoft Corporation'>
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// </copyright>
//------------------------------------------------------------------------------
// 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.
//
namespace System.Text.RegularExpressions {
//| <include file='doc\RegexCapture.uex' path='docs/doc[@for="Capture"]/*' />
/// <devdoc>
/// <para>
/// Represents the results from a single subexpression capture. The object represents
/// one substring for a single successful capture.</para>
/// </devdoc>
//[ Serializable() ]
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>
/// Returns
/// 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
}
}