我遇到了一个问题,我从数据库中获取数据(字符串),其中Linebreaks为(Hex)0D
。我在Textbox
中显示了这些数据,但没有使用0D
作为简历。我发现文本框需要0D-0A
(LF& CR,不知道哪个是哪个)来实际显示新行。为了解决这个问题,我提出了以下代码。
Private Function convertString(txt As String) As String
Dim data = System.Text.Encoding.Default.GetBytes(txt)
Dim hexString As String = BitConverter.ToString(data)
hexString = hexString.Replace("0D", "0D-0A")
Dim arr As [String]() = hexString.Split("-"c)
Dim array As Byte() = New Byte(arr.Length - 1) {}
For i As Integer = 0 To arr.Length - 1
array(i) = Convert.ToByte(arr(i), 16)
Next
Return System.Text.Encoding.Default.GetString(array)
End Function
解释/程序:
1.将字符串转换为ByteArray
2.将ByteArray转换为Hex-String(由' - '分隔的Hex-Chars)
3.通过替换单独的一个来添加丢失的lf或cr
4.将Hex-String转换回ByteArray
5.将ByteArray转换回String
现在我的问题:
我很确定有更好的方法可以做到这一点。如何简化这些代码行呢?
答案 0 :(得分:1)
您应该只能vbCr
vbCrLf
Dim txt = "This is a" & vbCr & "test"
Encoding.UTF8.GetBytes(txt).HexDump()
{/ 1}}
HexDump
给(Dim txt2 = txt.Replace(vbCr, vbCrLf)
Encoding.UTF8.GetBytes(txt2).HexDump()
是一个自定义实用工具方法,但与问题无关):
00000000 54 68 69 73 20 69 73 20 61 0D 74 65 73 74 This is a·test
Private Function convertString(txt As String) As String
Return txt.Replace(vbCr, vbCrLf)
End Function
给出:
00000000 54 68 69 73 20 69 73 20 61 0D 0A 74 65 73 74 This is a··test
所以,你的整个方法将是:
services.AddIdentity<ApplicationUser, IdentityRole>(options =>
{
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromDays(1);
options.Lockout.MaxFailedAccessAttempts = 20;
});