0

我有这个代码:

newUrl = Request.RawUrl.ToString.Replace(Server.UrlEncode(category), "")

当 category="" 我得到错误:字符串不能是零长度。参数名称:oldValue

所以我想添加一个新的替换方法,除了一个空字符串作为要替换的参数之外。我不想检查 category 是否为空字符串,因为检查需要经常进行,并且会使我的代码过于复杂。所以我想添加一个方法“ReplaceNew”或用一个额外的参数“ignoreEmptyValue”重载String对象的“Replace”方法。

我试过了:

Public Module CustomMethods

Public Function ReplaceEx(original As String, pattern As String, replacement As String) As String
    If [String].IsNullOrEmpty(pattern) Then
        Return original
    Else
        Return original.Replace(pattern, replacement)
    End If
End Function
End Module

Public Class GlobalFunctions

Public Shared Function ReplaceEx(original As String, pattern As String, replacement As String) As String
    If [String].IsNullOrEmpty(pattern) Then
        Return original
    Else
        Return original.Replace(pattern, replacement)
    End If
End Function
End Class

然后我尝试了:

newUrl = Request.RawUrl.ToString.ReplaceEx(Server.UrlEncode(category), "")

但是 ReplaceEx 方法不可用这种方式,我得到错误:

“ReplaceEx”不是“字符串”的成员。

我真的想在 String 对象上使用 ReplaceEx 方法,因为我不想重构我的代码,而是用 .ToString.ReplaceEx 方法替换所有 .ToString.Replace 方法。我该怎么做?

4

2 回答 2

1

你可以这样做:

public static string ReplaceEx(this string original, string pattern, string replacement)
{
    if (String.IsNullOrEmpty(pattern))
        return original;
    else
        return original.Replace(pattern, replacement);
}

并使用ReplaceEx代替Replaceas

newUrl = Request.RawUrl.ToString.ReplaceEx(Server.UrlEncode(category), "")
于 2013-05-12T22:51:17.677 回答
0

这是为了让它工作:

Module MyExtensions
<Extension()>
Public Function ReplaceEx(ByVal original As String, ByVal pattern As String, ByVal replacement As String) As String
    If [String].IsNullOrEmpty(pattern) Then
        Return original
    Else
        Return original.Replace(pattern, replacement)
    End If
End Function
End Module

确保此行在代码中:

Imports System.Runtime.CompilerServices
于 2013-05-12T23:20:43.223 回答