管理c#中同一字符串中两个单词之间的空格
本文关键字:两个 单词 空格 之间 字符串 管理 | 更新日期: 2023-09-27 18:12:06
我有一个字符串列表,我在其中动态添加位置和邮政编码,
和我填充该列表在文本框与滚动条。但是位置和邮政编码之间有空格根据位置长度
例如:
Chicago 60016
Niles 12332
San Francisco 95858
我想要的是
Chicago 60016
Niles 12332
San Francisco 95858
下面是我的代码:
var List<string> CityZip = new List<string>();
foreach(var item in CollectionofCityZip)
{
CityZip.Add(item.City + " " + item.Zip);
}
我试过了CityZip.Add(item.City.PadRight(14) + item.Zip);
它给了我:
Chicago 60016
Niles 12332
San Francisco 95858
但是我想
Chicago 60016
Niles 12332
San Francisco 95858
如果您使用WPF,您可以为Listbox指定一个类似这样的项模板:
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Data}"></TextBlock>
<TextBlock Grid.Column="1" Text="x"></TextBlock >
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
如果您使用的是Winforms,使用具有可变空格数的等宽字体是最简单的解决方案。或者,您也可以自己绘制条目。
有关MSDN相关所以
如果您使用的是等宽字体(每个字母的宽度相同),那么您可以使用内置的PadRight
函数,该函数将用空格填充字符串,使其成为您指定的长度:
CityZip.Add(item.City.PadRight(14) + item.Zip);
注意这里的14是任意的。如果你想要正确排列,你需要先扫描列表,看看最长的字符串有多长,然后填充到这个长度。像这样的代码应该可以工作:
const int extraPadding = 1; // how much space to put after the longest entry
int maxLen = CollectionOfCityZip.Select(item => item.City.Length).Concat(new[] {0}).Max();
CityZip.Add(item.City.PadRight(maxLen + extraPadding) + item.Zip);
c# 6.0:
CityZip.Add($"{item.City,-14}{item.Zip}");
C # & lt;6.0:
CityZip.Add(string.Format("{0,-14}{1}", item.City, item.Zip));