解决  拆分数组并尝试删除换行符

ConsKa

知名会员
已加入
2020年12月11日
留言内容
85
编程经验
Beginner
我想创建一个列表,该列表具有应用于项目列表的预定前缀,后缀和编号。

我创建了2个PreFix框和2个后缀框。

然后,我将结果与以下代码放在一起:
C#:
List<string> prefixes = new List<string>();
List<string> suffixes = new List<string>();

for (var i = 0; i < 4; i++)
{
    var controlNumber = i + 1;

    if (Controls[$"Suffix{controlNumber}"].Text != "")
    {
        suffixes.Add(Controls[$"Suffix{controlNumber}"].Text.ToString());
    }
}
然后,将结果放入字符串中并进行修剪:
C#:
string outputPrefixes = string.Join("", prefixes);
string PreFixResult = outputPrefixes.Trim('\n');
string outputSuffixes = string.Join("", suffixes);
string 后缀结果 = outputSuffixes.Trim('\n');
然后,我使用\ n插入由\ n分隔的项目列表,并使用该代码在项目之前添加前缀,在项目之后添加后缀-我还为项目001、002等编号:
C#:
string[] inputNames;

if (nameInputTB.Text != "")
{
    inputNames = nameInputTB.Text.Split('\n');

    foreach (string item in inputNames)
    {
        j = j + 1;
        string nameResult = item.Trim('\n');

        outputbox.Text += j.ToString("D3") + " " + PreFixResult + " " + nameResult;
        outputbox.Text += j.ToString("D3") + " " + PreFixResult + " " + nameResult + " " + 后缀结果;
    }
}
当我将其复制到Excel中时,"SuffixResult"出现在下一个项目的开头。

因此,如果我的PreFix是Q.和MN,而我的后缀是Hold,而我的物品是Apple,Orange,Pear,我会得到:

001 Q.MN苹果
001 Q.MN苹果
保持002 Q.MN橙色
002 Q.MN橙色
保持 003 Q.MN梨
003 Q.MN梨
保持

您可以看到我在进行一些调整,但似乎并没有摆脱inputNames变量中的'\ n'。

只是想知道是否有人遇到过类似问题或是否有任何知识可以传授如何处理?
 
由主持人最后编辑:

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,501
地点
悉尼,澳大利亚
编程经验
10+
A Windows line break is a pair of characters - one carriage return and one line feed. You are only addressing line feeds in your code so you may well be leaving carriage returns in your data. You should use "\r\n" when splitting and trimming and see whether that addresses your issue.
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,501
地点
悉尼,澳大利亚
编程经验
10+
顺便说一句,这似乎有点愚蠢:
C#:
for (var i = 0; i < 4; i++)
{
    var controlNumber = i + 1;
为什么不这样做呢?
C#:
for (var i = 1; i < 5; i++)
{
and then use i in the loop?

Also, there's not much point calling ToString on the Text property of a control when it is already type string. It's not going to hurt but it shows that you're not really paying close attention to your data types.

另外,通常认为在代码中多次重复相同的复杂表达式是差劲的形式。通常,您应该一次对表达式求值并存储结果,然后使用它,例如
C#:
var controlText = Controls[$"Suffix{controlNumber}"].Text;

if (controlText != string.Empty)
{
    suffixes.Add(controlText);
}
和:
C#:
var str = j.ToString("D3") + " " + PreFixResult + " " + nameResult;

outputbox.Text += str;
outputbox.Text += str + " " + 后缀结果;
最后,我建议您在有两个以上的子字符串时开始使用字符串插值而不是串联,因为它倾向于提高可读性,例如
C#:
var str = $"{j:D3} {PreFixResult} {nameResult}";
您已经在代码的其他地方使用了字符串插值,但可能没有意识到,因为您是从其他地方复制并粘贴了它。
 
最佳 底部