c# - 使用 MyString.Remove(x,y) 从 C# 中的字符串中删除多个字符
问题描述
在我的服务器中运行程序(信标 检测代码)时,我将收到一个可变大小的字符串,名为io385。
字符串长度可以根据检测到的信标数量而有所不同:
- 一个信标:46 字节(前 4 字节无用,接下来 40 字节很重要,接下来 2 字节无用);
- 两个信标:90 个字节(前 2 个字节无用,接下来 40 个很重要,接下来 2 个无用);
- 三个信标:134 个字节(前 2 个字节无用,接下来 40 个重要,接下来 2 个无用;
...
所以,有了这个,我的想法是删除任何无用的东西。即使字符串的大小可能不同,我总是想删除固定位置的字节(对于第一个信标,前四个和最后两个;对于下一个信标,前两个和最后两个)。
我开始手动删除 2信标字符串上的无用字节。但是,我想对此进行优化,以便无论字符串是 46 字节还是 xxxx 字节都可以自动工作(否则,我将不得不为每个可能的字符串长度手动编码字符删除过程)。
string io385 = "11210000AAAA0000AAAA0000AAAA0000AAAA0A0A0A0ABF210000BBBB0000BBBB0000BBBB0000BBBB0B0B0B0BBF";
string informacao = String.Copy(io385);
informacao = informacao.Remove(0,4).Remove(40,2).Remove(40,2).Remove(80,2);
int x = io385.Length;
int y = informacao.Length;
Console.WriteLine("Original String: {0}", io385);
Console.WriteLine("Copied String: {0}", informacao);
Console.WriteLine("Original String length: {0}", x);
Console.WriteLine("Copied String length: {0}", y);
解决方案
给定
public static IEnumerable<string> GetStuff(string input)
{
Console.WriteLine(input.Length);
if (input.Length == 46)
yield return input.Substring(4, 40);
else
for (var i = 0; i < input.Length; i += 44)
yield return input.Substring(i + 2, 40);
}
用法
var input = "xxxx1234567890123456789012345678901234567890xx";
var input2 = "xx1234567890123456789012345678901234567890xxxx1234567890123456789012345678901234567890xxxx1234567890123456789012345678901234567890xxxx1234567890123456789012345678901234567890xx";
Console.WriteLine(string.Join("\r\n", GetStuff(input)));
Console.WriteLine();
Console.WriteLine(string.Join("\r\n", GetStuff(input2)));
输出
46
1234567890123456789012345678901234567890
176
1234567890123456789012345678901234567890
1234567890123456789012345678901234567890
1234567890123456789012345678901234567890
1234567890123456789012345678901234567890
推荐阅读
- tensorflow - 为英特尔至强黄金 6148 构建张量流
- c# - 在 XAML 语句上使用 VS 2017 时出现编码调试错误
- php - Activerecord CodeIgniter 3
- azure-api-management - Azure API 管理 - 从内部服务导入开放 API
- google-kubernetes-engine - 复制可以在不同的节点类型上吗?
- jobs - 如何在作业开始之前将数据复制到特定的 HPC 节点而不知道它是哪个节点
- html - 为什么向引导元素添加自定义类在 chrome 中不起作用,但在边缘中起作用?
- r - R:通过recipies包对分类变量进行频率编码
- vue.js - 在 vuetify 中使用 Firestore 进行服务器端分页
- sql - 将 int 列复制到具有正值的另一列