gpt4 book ai didi

C# 将字符串行拆分为多个字符串

转载 作者:行者123 更新时间:2023-11-30 17:43:37 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何将一些 cmd 输出拆分为多个字符串,以便稍后用于设置标签。

我使用的代码是:

ProcessStartInfo diskdrive = new ProcessStartInfo("wmic", " diskdrive get index, model, interfacetype, size");
diskdrive.UseShellExecute = false;
diskdrive.RedirectStandardOutput = true;
diskdrive.CreateNoWindow = true;
var proc = Process.Start(diskdrive);

string s = proc.StandardOutput.ReadToEnd();

它给出了这样的输出:

Index  InterfaceType  Model                   Size           
2 IDE WesternDigital 1000202273280
1 IDE Seagate 500105249280
0 IDE SAMSUNG SSD 830 Series 128034708480

是否可以将其放入列表或数组中,以便我可以获得例如磁盘 2 的大小或磁盘 0 的接口(interface)类型。我可以在 C# 中做一些基本的事情,但这是我的头:我

最佳答案

这是一个工作示例。 “结果”将包含一个包含您需要的相关部分的列表。这是第一次通过,我相信可以进行一些重构:

using System;
using System.Collections.Generic;
using System.Linq;

namespace columnmatch
{
internal class Program
{

private const string Ex1 = "2 IDE WesternDigital 1000202273280";
private const string Ex2 = "1 IDE Seagate 500105249280 ";
private const string Ex3 = "0 IDE SAMSUNG SSD 830 Series 128034708480";

private static void Main(string[] args)
{
var result = new List<MyModel>();
result.Add(ParseItem(Ex1));
result.Add(ParseItem(Ex2));
result.Add(ParseItem(Ex3));
}

private static MyModel ParseItem(string example)
{
var columnSplit = example.Split((char[]) null, StringSplitOptions.RemoveEmptyEntries);

int index = -1;
string interfaceType = string.Empty;
long size = -1;
string model = string.Empty;

if (columnSplit.Count() == 4)
{
//direct match (no spaces in input)
index = Convert.ToInt32(columnSplit[0]);
interfaceType = columnSplit[1];
model = columnSplit[2];
size = Convert.ToInt64(columnSplit[3]);
}
else
{
string modelDescription = string.Empty;

for (int i = 0; i < columnSplit.Count(); i++)
{
if (i == 0)
{
index = Convert.ToInt32(columnSplit[i]);
}
else if (i == 1)
{
interfaceType = columnSplit[i];
}
else if (i == columnSplit.Count() - 1) //last
{
size = Convert.ToInt64(columnSplit[i]);
}
else
{
//build the model
modelDescription += columnSplit[i] + ' ';
}
}

model = modelDescription.TrimEnd();
}

var myItem = BuildResultItem(index, interfaceType, model, size);
return myItem;
}

private static MyModel BuildResultItem(int index, string interfaceType, string model, long size)
{
var myItem = new MyModel
{
Index = index,
InterfaceType = interfaceType,
Model = model,
Size = size
};

return myItem;
}

private class MyModel
{
public int Index { get; set; }
public string InterfaceType { get; set; }
public string Model { get; set; }
public long Size { get; set; }
}
}
}

这个答案遵循我评论中的事实:总是有 4 列,第一列和最后一列总是数字,并从那里开始。

关于C# 将字符串行拆分为多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30668534/

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