这个问题几乎与这个问题相反: C#是否内置支持解析页码字符串?
所以给定
1,3,5,6,7,8,9,10,12:
Run Code Online (Sandbox Code Playgroud)
我会输出:
1,3,5-10,12
Run Code Online (Sandbox Code Playgroud)
这是我的第一次尝试.它看起来有点像hacky,可能是我写过的最糟糕的代码.你能提出一个改进的方法吗?更好的办法吗?
static string numListToRangeStr(List<int> numList)
{
StringBuilder retString = new StringBuilder();
numList.Sort();
bool inRangeFind = false;
int firstInRange = numList[0];
int lastNumber = firstInRange;
bool first = true;
for (int i = 1; i < numList.Count; i++)
{
if (numList[i] == (lastNumber + 1))
{
inRangeFind = true;
}
else
{
if (inRangeFind)
{
if (!first)
{
retString.Append(",");
}
retString.Append(firstInRange);
retString.Append("-");
}
else
{
if (!first)
{
retString.Append(",");
}
}
retString.Append(lastNumber);
firstInRange = numList[i]; …Run Code Online (Sandbox Code Playgroud) 我正在尝试从List创建一个字符串
这是我的代码
List<string> SelectedSalesmen = new List<string>();
Run Code Online (Sandbox Code Playgroud)
我正在从列表框中添加选定的销售人员
foreach (ListItem lst in lstBoxSalesmen.Items)
{
if (lst.Selected)
{
SelectedSalesmen.Add(lst.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
最后我将该值存储到这样的字符串中
string SalesManCode = string.Join(",", SelectedSalesmen.ToArray());
Run Code Online (Sandbox Code Playgroud)
但我会这样
SLM001,SLM002,SLM003
Run Code Online (Sandbox Code Playgroud)
但我需要像这样的输出
'SLM001','SLM002','SLM003'
Run Code Online (Sandbox Code Playgroud)