需求:如图产品有数字的要在数字前面加上*号,没有数字的要加上(*1),如果是多个产品的还要在数量后面加上[0]
这个是我做的winform程序,数据是打开的Excel格式文件,处理之后再导出为Excel格式文件,代码写到一半感觉逻辑有点混乱了,请各位大神帮忙指导一下,谢谢
public void GetDataset(DataSet ds)
{
//遍历行
foreach (DataRow mDr in ds.Tables[0].Rows)
{
//遍历列
foreach (DataColumn mDc in ds.Tables[0].Columns)
{
String str = mDr[mDc].ToString(); if (str.IndexOf("+") > 0)//如果在单元格中搜索到+符号则执行下面操作
{
str.Substring(str.IndexOf("+"), str.Length);
}
else//如果在单元格中没有搜索到+符号则执行下面操作
{
if (str.IndexOf("(") > 0)
{
str = str.Insert(str.IndexOf("(") + 1, "*");
}
else
{
str += str + "(*1)";
}
} }
}
}
这个是我做的winform程序,数据是打开的Excel格式文件,处理之后再导出为Excel格式文件,代码写到一半感觉逻辑有点混乱了,请各位大神帮忙指导一下,谢谢
public void GetDataset(DataSet ds)
{
//遍历行
foreach (DataRow mDr in ds.Tables[0].Rows)
{
//遍历列
foreach (DataColumn mDc in ds.Tables[0].Columns)
{
String str = mDr[mDc].ToString(); if (str.IndexOf("+") > 0)//如果在单元格中搜索到+符号则执行下面操作
{
str.Substring(str.IndexOf("+"), str.Length);
}
else//如果在单元格中没有搜索到+符号则执行下面操作
{
if (str.IndexOf("(") > 0)
{
str = str.Insert(str.IndexOf("(") + 1, "*");
}
else
{
str += str + "(*1)";
}
} }
}
}
List<string> list = new List<string>()
{
"苹果+安卓(2)+Microsoft",
"苹果(3)+安卓(2)+Microsoft(5)",
"苹果+安卓+Microsoft(2)",
"苹果(2)+安卓+Microsoft(2)",
"苹果(2)",
"安卓"
};
foreach (var row in list)
{
string newStr = string.Empty;
string[] section = row.Split('+');
for (int i = 0; i < section.Count(); i++)
{
string[] arr = section[i].Split('(', ')');
if (arr.Count() == 1)
{
newStr += arr[0] + "(*1)";
}
else
{
newStr += string.Format("{0}(*{1})", arr[0], arr[1]);
}
if (section.Count() > 1 && i < section.Count() -1) newStr += "[0]";
if (i < section.Count() - 1) newStr += "+";
} Console.WriteLine(newStr);
}Console.ReadKey();
"苹果+Android(2)+Micsoft",
"苹果(3)+Android(2)+Micsoft(5)",
"苹果+Android(2)+Micsoft",
"苹果+Android+Micsoft(2)",
"苹果(2)+Android+Micsoft(2)",
"苹果(2)+Android(2)+Micsoft",
"苹果(2)",
"Android",
};
for (var i = 0; i < a.Length; i++)
{
var b = new StringBuilder(a[i]);
for (var j = 1; j < b.Length; j++)
{
if (b[j] == '+')
{
var c = "(1)";
if (b[j - 1] == ')') c= "[0]";
b.Insert(j, c);
j += c.Length;
}
}
if (b[b.Length - 1] != ')') b.Append("(1)");
Console.WriteLine(b.ToString());
}
苹果(1)+Android(2)[0]+Micsoft(1)
苹果(3)[0]+Android(2)[0]+Micsoft(5)
苹果(1)+Android(2)[0]+Micsoft(1)
苹果(1)+Android(1)+Micsoft(2)
苹果(2)[0]+Android(1)+Micsoft(2)
苹果(2)[0]+Android(2)[0]+Micsoft(1)
苹果(2)
Android(1)
"苹果+Android(2)+Microsoft",
"苹果(3)+Android(2)+Microsoft(5)",
"苹果+Android+Microsoft(2)",
"苹果(2)+Android+Microsoft(2)",
"苹果(2)",
"Android" };
foreach (var row in list)
{
string[] Arr = row.ToString().Split('+');
string returnString = "";
for (int i = 0; i < Arr.Length; i++)
{
if (Arr[i].IndexOf("(") == -1)
{
Arr[i] = Arr[i] + "(1)";
}
returnString += "+" + Arr[i];
}
Console.WriteLine(returnString.TrimStart('+').Replace("+", "[0]+").Replace("(", "(*"));
}
Console.ReadKey();
"苹果+Android(2)+Microsoft",
"苹果(3)+Android(2)+Microsoft(5)",
"苹果+Android+Microsoft(2)",
"苹果(2)+Android+Microsoft(2)",
"苹果(2)",
"Android" }; foreach(var item in list)
{
string[] arr = item.Split('+');
for (int i = 0; i < arr.Length;i++ )
{
if (arr[i].Contains("("))
arr[i] = arr[i].Replace("(", "(*");
else
arr[i] = arr[i] + "(*1)";
if (i < arr.Length - 1)
arr[i] += "[0]";
}
Console.WriteLine(string.Join("+",arr));
}