Substring a String from given start index and given substring length
for something like this I would suggest making it an Extension Method.

To that end I would suggest a name change as well.  Perhaps Substring_NoException.

To make it complete I think having the same overloads as Substring would help.

As for reducing/eliminating the conditional checks, one option is to use a Try/Catch block and simply catch every exception that Substring would and return an empty string except for the length being too long.

It might look something like this:

Imports System.Runtime.CompilerServices

    ''' &lt;summary&gt;
    ''' Extension method for &lt;c&gt;Substring&lt;/c&gt; to return empty strings instead of throwing exceptions
    ''' &lt;/summary&gt;
    ''' &lt;param name="startIndex"&gt;The zero-based character position of a substring in this instance&lt;/param&gt;
    '''
    &lt;Extension()&gt;
    Public Function Substring_NoException(input As String, startIndex As Integer) As String
        Return input.Substring_NoException(startIndex, input.Length - startIndex)
    End Function

    ''' &lt;summary&gt;
    ''' Extension method for &lt;c&gt;Substring&lt;/c&gt; to return empty strings instead of throwing exceptions
    ''' &lt;/summary&gt;
    ''' &lt;param name="startIndex"&gt;The zero-based character position of a substring in this instance&lt;/param&gt;
    ''' &lt;param name="length"&gt;The number of characters in a substring&lt;/param&gt;
    '''
    &lt;Extension()&gt;
    Public Function Substring_NoException(input As String, startIndex As Integer, length As Integer) As String
        Try
            Return input.Substring(startIndex, length)
        Catch ex As ArgumentOutOfRangeException
            If ex.ParamName = "length" AndAlso length &gt; input.Length - startIndex Then
                Return input.Substring(startIndex)
            End If
            Return String.Empty
        End Try
    End Function


usage is:

Dim testString As String = "abcdef"
Dim testString2 = testString.Substring_NoException(3, 100)


Returned value is:

testString2 = "def"