我有一个ListBox
,其中的表名是这样写的:
Staging_Section_01_2019_03_19_01
Staging_Section_01_2019_03_20_01
Staging_Section_23_2019_03_21_01
Staging_Section_52_2019_03_23_01
Staging_Section_52_2019_03_24_01
我想做的是用节号将它们分开,所以我希望所有Section_01
在一个List
对象中,而Section_23
在另一个List
对象中,所以等等。动态的性质令我很难。
到目前为止,我有以下内容:
foreach (var it in uploadBox.Items)
{
if (it.ToString().Contains("Section"))
{
section = it.ToString().Substring(0, 18);
found = it.ToString().IndexOf("_");
section = section.Substring(found + 1);
sectionNum = section.Substring(8, 2);
}
}
我得到了sectionNum
,它只是数字和部分,是像Section_01
这样的字符串。
关于如何解决这个问题的任何想法?
预期输出将是这样的:
Staging_Section_01_2019_03_19_01
Staging_Section_01_2019_03_20_01
Staging_Section_23_2019_03_21_01
Staging_Section_52_2019_03_23_01
Staging_Section_52_2019_03_24_01
答案 0 :(得分:1)
为此,我将使用Dictionary<string, List<string>>
。解析的每个“节”都将是一个键,其余部分将是该值。
Dictionary<string, List<string>> myDict = new Dictionary<string, List<string>>();
foreach (var it in uploadBox.Items)
{
if (it.ToString().Contains("Section"))
{
section = it.ToString().Substring(0, 18);
found = it.ToString().IndexOf("_");
section = section.Substring(found + 1);
sectionNum = section.Substring(8, 2);
if(!myDict.ContainsKey(sectionNum))
{
myDict.Add(sectionNum, new List<string> { someOtherValue });
}
else
{
myDict[sectionNum].Add(someOtherValue);
}
}
}
除非我完全误解了您的问题,否则我认为这是对动态对象的一种潜在解决方案。
答案 1 :(得分:0)
您可以执行以下操作:
import numpy as np
import matplotlib.pyplot as plt
#generate some random data
data = np.random.randn(200)
#plot
box = plt.boxplot(data)
# change the color of its elements
for _, line_list in box.items():
for line in line_list:
line.set_color('k')
plt.show()
答案 2 :(得分:0)
对于此类任务,最好使用正则表达式:
uploadBox.Items
.GroupBy(x => Regex.Match(x.ToString(), @"^\w+_Section_(?<section>\d+)").Groups["section"].Value)