我正在尝试将此从字符串中删除 CRLF 的 VBA 函数转换为必须执行相同结果的 C# 函数
Private Function RemoveCRLFFromString(ByVal pString As Variant) As String
Dim i As Integer
Dim c As String * 1
If IsNull(pString) Then
RemoveCRLFFromString = ""
Else
For i = 1 To Len(pString)
c = Mid$(pString, i, 1)
If Asc(c) <> 10 And _
Asc(c) <> 13 Then
RemoveCRLFFromString = RemoveCRLFFromString & c
End If
Next i
End If
RemoveCRLFFromString = Left$(RemoveCRLFFromString, 9)
End Function
Run Code Online (Sandbox Code Playgroud)
到目前为止,我想出了:
public static string RemoveCRLFFromString(string pString )
{
if(String.IsNullOrEmpty(pString))
{
return pString ;
}
string lineSep = ((char) 0x2028).ToString();
string paragraphSep = ((char)0x2029).ToString();
return pString.Replace("\r\n", string.Empty).Replace("\n", string.Empty).Replace("\r", string.Empty).Replace(lineSep, string.Empty).Replace(paragraphSep, string.Empty);
}
Run Code Online (Sandbox Code Playgroud)
但它没有达到相同的结果,有人可以帮助我调整我的 C# 函数以匹配与 VBA 版本相同的结果吗?
您缺少空检查(在这种情况下,原始函数返回一个空字符串)并且您也忘记了Left$修剪字符串大小的方法。
public static string RemoveCRLFFromString(string pString)
{
//Return empty string if null passed
if(pString == null)
return "";
//Remove carriage returns
var str = pString.Replace("\n","").Replace("\r","");
//If len is more than 9 chars trim it
return str.Length > 9 ? str.Substring(0, 9) : str;
}
Run Code Online (Sandbox Code Playgroud)