gpt4 book ai didi

c# - 从字符串中删除以 SOT 开头并以 EOT 结尾的子字符串

转载 作者:行者123 更新时间:2023-11-30 22:00:51 26 4
gpt4 key购买 nike

我有一个程序可以从内存中读取某些字符串。这些字符串大部分包含可识别的字符。然而,在字符串中的随机点,会出现“奇怪”的字符。我不认识的字符。通过访问允许我粘贴 Unicode 字符的站点以查看它们是什么,我发现选择的“奇怪”字符如下:

  • \x{1} SOH, "标题开始", ctrl-a
  • \x{2} SOT,“文本开始”
  • \x{3} EOT,“文本结束”
  • \x{7} BEL, bell, ctrl-g
  • \x{13} dc3,设备控制三,ctrl-s
  • \x{11} dc1, 设备控制一, ctrl-q
  • \x{14} dc4,设备控制四,ctrl-t
  • \x{1A} sub, substitute, ctrl-z
  • \x{6} ack, acknowledge, ctrl-f

我想解析我的字符串以删除这些字符。不过,通过查看字符串,我发现所有不需要的字符总是分别被 SOT 和 EOT 包围。

因此,我认为我的问题是:如何从字符串中删除所有出现的以 SOT 开头并以 EOT 结尾的子字符串?


编辑:尝试解决

使用@RagingCain 的想法,我做了以下方法:

    private static string RemoveInvalidCharacters(string input)
{
while (true)
{
var start = input.IndexOf('\u0002');
var end = input.IndexOf('\u0003', start);

if (start == -1 || end == -1) break;

Console.WriteLine(@"Start: " + start + @". End: " + end);
var diff = end - start;
input = input.Remove(start, diff);
}
return input;
}

它成功了,再次感谢。

最佳答案

Regex 将是您的解决方案,应该可以正常工作。您可以将这些字符分配给 Pattern,您可以使用子方法 Match 或者甚至只是 Replace 用空格 "",或者使用 ""将它们一起从字符串中删除。

正则表达式替换:https://msdn.microsoft.com/en-us/library/xwewhkd1(v=vs.110).aspx

正则表达式匹配:https://msdn.microsoft.com/en-us/library/bk1x0726(v=vs.110).aspx

正则表达式示例:

 public static void Main()
{
string input = "This is text with far too much " +
"whitespace.";
string pattern = "\\s+";
string replacement = " ";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);

Console.WriteLine("Original String: {0}", input);
Console.WriteLine("Replacement String: {0}", result);
}

我知道无法“看到”它们的困难,因此您应该通过 Unicode 本身将它们分配给 Char 变量,将它们添加到模式中以进行替换。

字符变量:https://msdn.microsoft.com/en-us/library/x9h8tsay.aspx

文本开头的 Unicode: http://www.fileformat.info/info/unicode/char/0002/index.htm

文本结尾的 Unicode: http://www.fileformat.info/info/unicode/char/0003/index.htm

要应用于您的解决方案:字符串是否包含 SOT、EOT。如果为真,则删除整个字符串/子字符串/SOT 或 EOT。

将原始字符串拆分为字符串[],然后逐行处理可能更容易...在不知道字符串是什么样子的情况下很难解析你的字符串,所以希望我提供了一些有用的东西 ^.^

关于c# - 从字符串中删除以 SOT 开头并以 EOT 结尾的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28215808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com