从字符串 C# 中删除 CRLF

nap*_*i15 2 c# string vba

我正在尝试将此从字符串中删除 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 版本相同的结果吗?

Gus*_*man 6

您缺少空检查(在这种情况下,原始函数返回一个空字符串)并且您也忘记了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)