我有这个代码行:
newUrl = Request.RawUrl.ToString.Replace(Server.UrlEncode(category), "")
当category =""我收到错误: 字符串长度不能为零。 参数名称:oldValue
所以我想添加一个新的替换方法,除了空字符串作为要替换的参数之外。 我不想检查类别是否为空字符串,因为检查需要经常发生并且会使我的代码过于复杂。 所以我想添加一个方法" ReplaceNew"或超载"替换" String对象的方法,带有一个额外的参数" ignoreEmptyValue"。
我试过了:
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'的成员。
我真的希望在String对象上使用ReplaceEx方法,因为我不想重构我的代码,而是用.ToString.ReplaceEx方法替换所有.ToString.Replace方法。 我怎么能这样做?
答案 0 :(得分: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
代替Replace
作为
newUrl = Request.RawUrl.ToString.ReplaceEx(Server.UrlEncode(category), "")
答案 1 :(得分: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