如果文件存在,更改变量a - z (c#)
本文关键字:变量 存在 文件 改变 如果 | 更新日期: 2023-09-27 18:12:34
嘿大家,我目前得到下一个变量基于文件是否存在,但知道必须有一个更简单的方法。这个线程通过字母表迭代- c# a-caz给了我一些很好的洞察力,但我有一点问题实现它与我有。任何建议都将非常感谢。由于
//Generate Motor Spacer Part Number
textBox3.Text = "MLB028A-MTRSPR-" + "z" + "-" + "y";
if (comboBox3.Text == "28mm (NEMA 11)") textBox3.Text = textBox3.Text.Replace("z", "B");
if (comboBox3.Text == "28mm (NEMA 11)") textBox3.Text = textBox3.Text.Replace("y", "A");
//Generate Motor Spacer Part Descriptions
textBox5.Text = "SPACER, " + comboBox3.Text + ", CFG-" + "y" + " MLB028";
if (comboBox3.Text == "28mm (NEMA 11)") textBox5.Text = textBox5.Text.Replace("y", "A");
string B = @"C:'Engineering'Engineering'SW Automation'Linear Actuator Technology'MLC Series'Models'MLB028Z-MTRSPR-B-A.SLDPRT";
if (File.Exists(B))
{
testBox3.Text = textBox3.Text.Replace("y", "B");
textBox5.Text = textBox5.Text.Replace("y", "B");
}
string C = @"C:'Engineering'Engineering'SW Automation'Linear Actuator Technology'MLC Series'Models'MLB028Z-MTRSPR-B-B.SLDPRT";
if (File.Exists(C))
{
testBox3.Text = textBox3.Text.Replace("y", "C");
textBox5.Text = textBox5.Text.Replace("y", "C");
}
看下面的代码:
textBox3.Text.Replace("y", "B");
这和你想的不一样。
string.Replace
不会改变现有字符串的内容(它不能,字符串是不可变的)。它返回一个新的字符串并进行替换。所以你可能想:
textBox3.Text = textBox3.Text.Replace("y", "B");
可能还有其他问题——很难知道,因为代码相当复杂——但这(以及其他类似的行)肯定是有问题的。
好吧,我不太清楚你到底想要完成什么。如果您尝试使用基于在具有特定文件名的目录中找到的第一个文件的值填充两个文本框,则尝试以下操作:
void PopulateTextBoxes()
{
string format = "MLB028A-MTRSPR-B-{1}";
string format2 = "SPACER, {0}, CFG-{1} MLB028";
string fileName = @"C:'Engineering'Engineering'SW Automation'Linear Actuator Technology'MLC Series'Models'MLB028Z-MTRSPR-B-{1}.SLDPRT";
for(string start = "A"; start != "Z"; start = GetNextBase26(start))
{
if(File.Exists(String.Format(fileName,start)))
{
textBox3.Text = String.Format(format,start);
textBox5.Text = String.Format(format2,textBox3.Text,start);
break;
}
}
}
// CODE FROM http://stackoverflow.com/questions/1011732/iterating-through-the-alphabet-c-sharp-a-caz
private static string GetNextBase26(string a)
{
return Base26Sequence().SkipWhile(x => x != a).Skip(1).First();
}
private static IEnumerable<string> Base26Sequence()
{
long i = 0L;
while (true)
yield return Base26Encode(i++);
}
private static char[] base26Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
private static string Base26Encode(Int64 value)
{
string returnValue = null;
do
{
returnValue = base26Chars[value % 26] + returnValue;
value /= 26;
} while (value-- != 0);
return returnValue;
}