Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Configuration / RegexWorker.cs / 2 / RegexWorker.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * Base class for browser capabilities object: just a read-only dictionary * holder that supports Init() * * */ using System.Web.UI; using System.Collections; using System.Collections.Specialized; using System.ComponentModel; using System.Globalization; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using System.Web.RegularExpressions; using System.Web.Util; namespace System.Web.Configuration { // [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class RegexWorker { internal static readonly Regex RefPat = new BrowserCapsRefRegex(); private Hashtable _groups; private HttpBrowserCapabilities _browserCaps; public RegexWorker(HttpBrowserCapabilities browserCaps) { _browserCaps = browserCaps; } private string Lookup(string from) { MatchCollection matches = RefPat.Matches(from); // shortcut for no reference case if (matches.Count == 0) { return from; } StringBuilder sb = new StringBuilder(); int startIndex = 0; foreach (Match match in matches) { int length = match.Index - startIndex; sb.Append(from.Substring(startIndex, length)); startIndex = match.Index + match.Length; string groupName = match.Groups["name"].Value; string result = null; if (_groups != null) { result = (String)_groups[groupName]; } if (result == null) { result = _browserCaps[groupName]; } sb.Append(result); } sb.Append(from, startIndex, from.Length - startIndex); string output = sb.ToString(); // Return null instead of empty string since empty string is used to override values. if (output.Length == 0) { return null; } return output; } public string this[string key] { get { return Lookup(key); } } public bool ProcessRegex(string target, string regexExpression) { if(target == null) { target = String.Empty; } Regex regex = new Regex(regexExpression, RegexOptions.ExplicitCapture); Match match = regex.Match(target); if(match.Success == false) { return false; } string[] groups = regex.GetGroupNames(); if (groups.Length > 0) { if (_groups == null) { _groups = new Hashtable(); } for (int i = 0; i < groups.Length; i++) { _groups[groups[i]] = match.Groups[i].Value; } } return true; } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Debug.cs
- Clause.cs
- DynamicVirtualDiscoSearcher.cs
- XmlDataSourceView.cs
- MetadataPropertyvalue.cs
- Number.cs
- DrawingGroupDrawingContext.cs
- GroupByQueryOperator.cs
- ProgressBar.cs
- SqlExpander.cs
- ClientTargetSection.cs
- DrawingContextDrawingContextWalker.cs
- MenuItemCollection.cs
- HttpCachePolicyElement.cs
- RoleManagerEventArgs.cs
- SizeValueSerializer.cs
- XsdCachingReader.cs
- DbConnectionClosed.cs
- Int32CollectionValueSerializer.cs
- DataMember.cs
- EndpointIdentityConverter.cs
- DataColumnMapping.cs
- SerialPort.cs
- DataGridViewToolTip.cs
- ExtensionQuery.cs
- SoapCodeExporter.cs
- DataSourceXmlClassAttribute.cs
- StickyNoteAnnotations.cs
- MultiAsyncResult.cs
- ProfileServiceManager.cs
- DateTimeStorage.cs
- EdmItemCollection.cs
- UnmanagedMemoryStream.cs
- ListenerElementsCollection.cs
- ServiceBusyException.cs
- FileUtil.cs
- CodeAttributeDeclaration.cs
- MediaPlayerState.cs
- SineEase.cs
- DirectoryObjectSecurity.cs
- GraphicsPath.cs
- ContentFileHelper.cs
- ProtectedConfiguration.cs
- StringUtil.cs
- SelectionEditor.cs
- ObjectHandle.cs
- IsolatedStorageException.cs
- ExtendLockAsyncResult.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- _SpnDictionary.cs
- InternalCache.cs
- ArithmeticException.cs
- DLinqDataModelProvider.cs
- WebPartManagerDesigner.cs
- DbCommandDefinition.cs
- TextBox.cs
- UnicastIPAddressInformationCollection.cs
- ConsoleCancelEventArgs.cs
- __Filters.cs
- WindowsGraphics2.cs
- DispatcherTimer.cs
- ComponentEditorForm.cs
- OleDragDropHandler.cs
- CodeGeneratorAttribute.cs
- HttpWebRequestElement.cs
- XmlUrlResolver.cs
- HitTestResult.cs
- TextRange.cs
- MultiSelector.cs
- KeyValuePairs.cs
- SortedDictionary.cs
- SignatureDescription.cs
- RequestCachingSection.cs
- WorkflowDefinitionDispenser.cs
- ThreadExceptionDialog.cs
- EmptyReadOnlyDictionaryInternal.cs
- ScriptBehaviorDescriptor.cs
- DomainUpDown.cs
- SqlTopReducer.cs
- ElapsedEventArgs.cs
- SerialPinChanges.cs
- RawContentTypeMapper.cs
- LambdaCompiler.ControlFlow.cs
- CollectionsUtil.cs
- TranslateTransform3D.cs
- HwndSourceKeyboardInputSite.cs
- DataTableClearEvent.cs
- DataRecordInfo.cs
- UserControlCodeDomTreeGenerator.cs
- HostedAspNetEnvironment.cs
- DataSourceViewSchemaConverter.cs
- MessageProperties.cs
- SqlProviderManifest.cs
- MiniAssembly.cs
- SemaphoreSecurity.cs
- MatrixValueSerializer.cs
- MasterPageBuildProvider.cs
- CustomTrackingRecord.cs
- SmtpReplyReaderFactory.cs
- XmlBindingWorker.cs