Hallo liebe Leser.
Hier mein Werk, um Pfad und Argumente aus einem
Eventuelle Argumente werden als ein
Kritikpunkte
Lange Rede, kurzer Sinn, hier der Code:
PathArgumentsSplitter.vb
Hier mein Werk, um Pfad und Argumente aus einem
String
(z.B. aus der Registry), voneinander zu trennen und als Paar in einer Klasse gespeichert.Eventuelle Argumente werden als ein
String
gespeichert, der bei bedarf zu einem StringArray
konvertiert werden kann (Extension ist dabei).RodFromGermany schrieb:
Allerdings ist die Nebenbedingung, dass die Datei bzw. der Pfad existieren muss, eine sehr einschränkende Nebenbedingung
Lange Rede, kurzer Sinn, hier der Code:
VB.NET-Quellcode
- ' Version: 1.0.2.0
- #Region "Options ..."
- Option Strict On
- Option Explicit On
- Option Compare Binary
- Option Infer Off
- #End Region
- Imports System.Runtime.CompilerServices
- Imports System.Text.RegularExpressions
- Imports System.IO
- Friend Class PathArgumentsSplitter
- Public Enum QuoteOption
- None
- All
- Auto
- End Enum
- ''' <summary>
- ''' Split subString from arguments (all as one string), if subString exist,
- ''' store both in data storage class "PathAndArguments()".
- ''' </summary>
- ''' <param name="_value"></param>
- ''' <returns>Data storage class "PathAndArguments()"</returns>
- ''' <exception cref="ValidFileOrDirectoryPathNotFoundException"></exception>
- Public Shared Function GetPathAndArguments(ByVal _value As String,
- ByVal Optional _quoteOption As QuoteOption = QuoteOption.Auto) As PathAndArguments
- Dim normalizedString As String = Normalize(_value)
- Dim subString As String
- ' Pass through "normalizedString" backwards (!) to prevent match a subfolder.
- For i As Integer = normalizedString.Length To 3 Step -1
- subString = normalizedString.Substring(0, i).TrimEnd
- If File.Exists(subString) OrElse Directory.Exists(subString) Then
- ' Check if substring "subString" eqals "normalizedString",
- ' or a space-char proximate substring "subString".
- ' If true, "subString" represent a existing path.
- If subString.Equals(normalizedString) OrElse
- normalizedString.Substring(subString.Length, 1).Equals(" ") Then
- Dim path As String
- If _quoteOption = QuoteOption.Auto AndAlso
- _value.StartsWith("""") AndAlso
- Regex.IsMatch(_value, "\""[^\]\r\n]+""") OrElse
- _quoteOption = QuoteOption.All Then
- path = Quote(subString)
- Else
- path = subString
- End If
- Return New PathAndArguments(path, normalizedString.Replace(subString, String.Empty).Trim)
- End If
- End If
- Next
- Throw New ValidFileOrDirectoryPathNotFoundException(
- $"No valid file/directory path found in ""{_value}"".")
- End Function
- ''' <summary>
- ''' Remove all """ And expand environment variables.
- ''' </summary>
- ''' <param name="_value"></param>
- ''' <returns>String</returns>
- Private Shared Function Normalize(ByVal _value As String) As String
- Return Environment.ExpandEnvironmentVariables(_value.Replace("""", String.Empty))
- End Function
- ''' <summary>
- ''' Add a """ char to the beginning and the end of the given string.
- ''' </summary>
- ''' <param name="_value"></param>
- ''' <returns>String</returns>
- Private Shared Function Quote(ByVal _value As String) As String
- Return $"""{_value}"""
- End Function
- End Class
- ''' <summary>
- ''' Data storage.
- ''' Property "Path" As String,
- ''' Property "Arguments" As String.
- ''' </summary>
- Public Class PathAndArguments
- Public Property Path As String
- Public Property Arguments As String
- Sub New(ByVal _subString As String, ByVal _arguments As String)
- Path = _subString
- Arguments = _arguments
- End Sub
- End Class
- ''' <summary>
- ''' Thrown if "GetPathAndArguments().subString.Length" is below 3 or,
- ''' "GetPathAndArguments().subString" not contain a existing file or folder subString.
- ''' </summary>
- <Serializable>
- Friend Class ValidFileOrDirectoryPathNotFoundException : Inherits Exception
- Public Sub New()
- End Sub
- Public Sub New(_message As String)
- MyBase.New(_message)
- End Sub
- End Class
- Public Module StringExtensions
- ''' <summary>
- ''' Convert a String to StringArray
- ''' </summary>
- ''' <param name="_value">The given string</param>
- ''' <param name="_seperator">Optional seperator as char = " "c</param>
- ''' <returns>StringArray</returns>
- <Extension>
- Public Function ToStringArray(ByVal _value As String, Optional _seperator As Char = " "c) As String()
- Return _value.Split(_seperator)
- End Function
- End Module
bit.ly/DotNetSearch
Code Konverter:
Online: @ developerfusion.com, @ telerik.com
Offline stand alone: Convert .NET, C# to VB Converter
VS Extensions: Convert .NET (Based on .NET 4.5), Language Convert
Code Konverter:
Online: @ developerfusion.com, @ telerik.com
Offline stand alone: Convert .NET, C# to VB Converter
VS Extensions: Convert .NET (Based on .NET 4.5), Language Convert
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „FormFollowsFunction“ ()