1

我有来自 TextBox1 的数据

00 00 00 4E FF 53 4D 42 25 00 00 00 00 18 01 28  ...N.SMB%......(
00 00 00 00 00 00 00 00 00 00 00 00 00 08 12 8B  ................
01 08 7E 31 11 00 00 05 00 00 00 00 00 00 00 02  ..~1............

我试图在结果 TextBox2 上将其更改为这样

...N.SMB%......(
................
..~1............

我试过函数 *. remove 但只删除第一行,但不删除第二行,依此类推。有谁能够帮我?

我用这个代码

string test = rtText1.Text;
rtText2.Text = test.Remove(0, 48);

然后这个结果 rtText2

...N.SMB%......(
00 00 00 00 00 00 00 00 00 00 00 00 00 08 12 8B  ................
01 08 7E 31 11 00 00 05 00 00 00 00 00 00 00 02  ..~1............

我怎样才能使命令“ test.Remove (0, 48); ”可以在每一行上完成?还是有其他功能?

4

2 回答 2

1

根据您发布的内容,很难准确地说出您需要什么,但正则表达式可能在这里工作得很好:

TextBox2.Text = System.Text.RegularExpressions.Regex.Replace(
                    TextBox1.Text, 
                    @"^.{49}", 
                    "", 
                    RegexOptions.Multiline );

这将简单地将每行的前 49 个字符替换为空字符串。

于 2012-10-24T19:21:56.520 回答
0

在我看来,好像您正在尝试删除右侧任何字符串的十六进制表示。

这对我有用:

// Initial data
string Data = @"00 00 00 4E FF 53 4D 42 25 00 00 00 00 18 01 28  ...N.SMB%......(
00 00 00 00 00 00 00 00 00 00 00 00 00 08 12 8B  ................
01 08 7E 31 11 00 00 05 00 00 00 00 00 00 00 02  ..~1............";
// An array containing each line of data
string[] lines = Data.Split('\n');
Data = "";
// Loop for each line, removing each "byte" + it's space, plus the trailing space
for (int i = 0; i < lines.Length; i++)
{
    Data += lines[i].Remove(0, (3 * 16) + 1);
    if (i != lines.Length - 1)
        Data += "\r\n";
}
Console.Write(Data);

这是输出:

...N.SMB%......(
................
..~1............

ideone链接

于 2012-10-24T19:35:19.893 回答