C# 如何删除最后一部分?
我想把这个分开:C# 如何删除最后一部分?,c#,string,split,C#,String,Split,我想把这个分开: 0, 250, 6, 5000, 10000, 15000, 20000, 25000, 70, 70, 70, 70, 70, 70, 0, words = poly[a].Split(charseparators); foreach (string word in words) { richTextBox1.Text += (d + 1)+ " " + word+ "\r\n"; d++; } 我试过: words =
0, 250, 6, 5000, 10000, 15000, 20000, 25000, 70, 70, 70, 70, 70, 70, 0,
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
我试过:
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
这不是完整的代码,但问题是:它应该如下所示:
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
18 70
19 70
20 0
但看起来是这样的:
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
18 70
19 70
20 0
21
还有一个额外的部分,因为在最后一个单词的末尾,总是有一个“,”
如何删除最后一行
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
代码:
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
public void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
int size = -1;
string text = "";
DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
file = openFileDialog1.FileName;
try
{
text = File.ReadAllText(file);
size = text.Length;
}
catch (IOException)
{
}
}
int a = 0;
int b =1;
int c = 0;
int d = 0;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(file);
XmlNodeList nodes = xmlDoc.SelectNodes("//Pacs_Parad//Pac_Parameter_Set//Pac_Zuo_Pave_Para");
XmlNodeList polygon = xmlDoc.GetElementsByTagName("Polygon_CS_List");
XmlNodeList value = xmlDoc.GetElementsByTagName("Value");
XmlNodeList synonym = xmlDoc.GetElementsByTagName("Synonym_Name");
XmlNodeList typeflag = xmlDoc.GetElementsByTagName("Type_Flag");
string[] poly = new string[polygon.Count];
foreach(XmlNode node in polygon)
{
poly[a] = node.InnerText;
a++;
}
a = 0;
string[] tf = new string[size];
foreach (XmlNode node in typeflag)
{
tf[a] = node.InnerText;
a++;
}
a = 0;
richTextBox1.Multiline = true;
richTextBox1.Clear();
string[]words = null;
char[] charseparators = new char[] { ',' };
for (int i = 0; i <synonym.Count; i++)
{
richTextBox1.Text += b + "." + " Name: " + synonym[i].InnerText + "\r\n" +
" Type: " ;
if (tf[i] == "P")
{
richTextBox1.Text += "Polygon " + "\r\n";
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
d = 0;
a++;
}
else
{
if (tf[i] == "C")
{
richTextBox1.Text += "Constant " + "\r\n";
richTextBox1.Text += "value: " + value[c].InnerText + "\r\n";
c++;
}
}
richTextBox1.Text += "\r\n";
b++;
}
}
其中,使用StringSplitOptions.RemoveEmptyEntries的拆分重载将确保删除所有空数组元素
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
这取决于charseparators的类型,如果它是char数组,则重载运算符将可用。如果没有,您只需将其放入一个:
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
words = poly[a].Split(new [] { charseparators }, StringSplitOptions.RemoveEmptyEntries);
性能微调与拆分
有趣的是:
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
var str = "0, 250, 6, 5000, 10000, 15000, 20000, 25000, 70, 70, 70, 70, 70, 70, 0,";
var timer = System.Diagnostics.Stopwatch.StartNew();
for (var i = 0; i < 1000000; i++)
{
str.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
}
timer.Stop();
Console.WriteLine($"Spliting took: {timer.ElapsedMilliseconds}ms");
timer = Stopwatch.StartNew();
for (int i = 0; i < 1000000; i++)
{
str.Trim(',').Split(',');
}
timer.Stop();
Console.WriteLine($"Trimming then Spliting took: {timer.ElapsedMilliseconds}ms");
仅在10000次以上的重复试验中可观察到结果:
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
Spliting took: 7ms
Trimming then Spliting took: 5ms
其中,使用StringSplitOptions.RemoveEmptyEntries的拆分重载将确保删除所有空数组元素
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
这取决于charseparators的类型,如果它是char数组,则重载运算符将可用。如果没有,您只需将其放入一个:
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
words = poly[a].Split(new [] { charseparators }, StringSplitOptions.RemoveEmptyEntries);
性能微调与拆分
有趣的是:
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
var str = "0, 250, 6, 5000, 10000, 15000, 20000, 25000, 70, 70, 70, 70, 70, 70, 0,";
var timer = System.Diagnostics.Stopwatch.StartNew();
for (var i = 0; i < 1000000; i++)
{
str.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries);
}
timer.Stop();
Console.WriteLine($"Spliting took: {timer.ElapsedMilliseconds}ms");
timer = Stopwatch.StartNew();
for (int i = 0; i < 1000000; i++)
{
str.Trim(',').Split(',');
}
timer.Stop();
Console.WriteLine($"Trimming then Spliting took: {timer.ElapsedMilliseconds}ms");
仅在10000次以上的重复试验中可观察到结果:
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
Spliting took: 7ms
Trimming then Spliting took: 5ms
您可以添加此行以删除最后的to字符,即\r和\n
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
您可以添加此行以删除最后的to字符,即\r和\n
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
如果字符串中允许有空入口,则不能使用
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
words = poly[a].Split(charseparators, StringSplitOptions.RemoveEmptyEntries);`
因为这样也会删除这些条目。我会在最后修剪分离器
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
words = poly[a].Split(charseparators.TrimEnd(','));
如果字符串中允许有空入口,则不能使用
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
words = poly[a].Split(charseparators, StringSplitOptions.RemoveEmptyEntries);`
因为这样也会删除这些条目。我会在最后修剪分离器
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
words = poly[a].Split(charseparators.TrimEnd(','));
通过StringSplitOptions删除空条目。RemoveEmptyEntries:
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
要防止richTextBox1闪烁,请尝试避免
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
richTextBox1.Text += ... // <- this is a bad parctice
但一次性分配文本值,例如通过string.Join通过StringSplitOptions删除空条目。RemoveEmptyEntries:
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
要防止richTextBox1闪烁,请尝试避免
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}
richTextBox1.Text += ... // <- this is a bad parctice
但是一次性分配文本值,例如通过string.Join在拆分之前使用.RTrim','怎么样?它仍然不能像我想的那样工作,我仍然不明白为什么…什么不能像我想的那样工作?你还有额外的条目吗?你有没有执行过任何建议?如果是:哪一个?在哪里?我尝试了你们写的所有这些东西,我真的很感谢,但没有一个有效,是的,我还有额外的21个,但我用我的方式尝试了修剪,它工作了words=poly[a]。splitcharseparator,StringSplitOptions.RemoveEmptyEntries;对于单词{richTextBox1.Text+=d+1++word.Trim','+\r\n;d++中的每个字符串单词,正确的修剪方法是words=poly[a].TrimEndcharseparators.Splitcharseparators;在你的演讲之前使用.RTrim',在分裂之前如何?它仍然不能像我想的那样工作,我仍然不明白为什么…什么不能像我想的那样工作?你仍然有额外的条目?你没有执行任何建议吗?如果是的话:哪个?在哪里?我尝试了所有这些东西你们写的东西,我真的很感谢,但没有一个有效,是的,我还有额外的21个,但我用我的方式尝试了修剪,效果很好,words=poly[a].Splitcharseparators,StringSplitOptions.RemoveEmptyEntries;对于单词{richTextBox1.Text+=d+1++word.Trim','+\r\n;d++;正确的修剪方法是单词=poly[a].TrimEndcharseparators.Splitcharseparators;在您的foreach之前
words = poly[a].Split(charseparators);
foreach (string word in words)
{
richTextBox1.Text += (d + 1)+ " " + word+ "\r\n";
d++;
}