carriage返回字符串,添加空格如何比较

时间:2013-05-20 18:01:39

标签: vb.net sql-server-2008

我在处理带有回车符的字符串时遇到了一些问题。 (我需要保留回车。并且不想为它们唯一编码。)这个字符串有2个回车...

Press the Switch

Drying

当我在Visual Studio的SQL编辑器中查看它时,它看起来像....

Press the SwitchDrying

这在技术上不是问题。我可以将内容复制并粘贴到Excel或其他地方,并且格式正确。

当我尝试将字符串与另一个变量进行比较时,即使它具有相同的值,也会出现问题。

我从Sql 2008 R2数据库表中查询一组记录,然后将它们与外部数据表进行比较。

因此,我遍历SQL结果集的记录....

For Each row As DataRow In myTable.Rows

    Dim stringVal As String = row(columnName).ToString()

    ' Eventually added this to see that the row was adding 2 spaces after the carriage return
    Dim cstringVal() As Char = stringVal.ToCharArray
    Dim csearchValue() As Char = searchValue.ToCharArray

    ' Originally tried
    If row(columnName) = searchValue And row(columnName2) = searchValue2 Then
        return True
    End If

    ' Tried this
    If stringVal = searchValue And row(columnName2) = searchValue2 Then
        Return True
    End If

    ' And this
    If String.Compare(stringVal, searchValue, False) = 0 And row(columnName2) = searchValue2 Then
        Return True
    End If
 Next
 Return False

添加char数组后,注意到第一次回车后有两个空格被添加。或者它们可能是每个之后的一个空格,因为未在char数组中标识CR。

我没有任何代码可以拆分此字符串,而且只有具有回车符的字符串才会导致此字符串。唯一的另一个区别是一个字符串是一个OLE DataAdapter,另一个是SQL DataAdapter。

是什么给出的?任何想法?

UPDATE :似乎SQL DataAdapater未正确表示从我的查询返回的数据集中的carraige返回值。当我在VS SQL编辑器中查看表内容时,可以正确地将字符串从表复制并粘贴到任何其他应用程序中。我将很快查看代码的比较。

1 个答案:

答案 0 :(得分:2)

new line可能是CR和LF的两个字节的组合(或十六进制中的0D 0A,在C#中转义为'\ r \ n'等)。如果你的字符串来自Linux系统,它可能使用单个字节LF。

如果字符串比较不考虑嵌入的新行字符,则预计会失败。如果您希望忽略换行符以进行字符串比较,则必须执行String.Replace之类的操作来删除换行符。当然,您始终可以保留包含换行符的原始字符串的副本。

我希望这与您所看到的问题相关吗?