将值添加到字符串会导致添加额外的空白空间
我执行的查询会将结果集带回到query
对象中。要建立代表查询结果我做了一个对象:将值添加到字符串会导致添加额外的空白空间
var customer = new Customer
{
CustomerAddress = $"{query.CustomerAddress} {query.City} {query.State} {query.Zip} {query.Country}",
CustomerPhone = $"{query.PhoneNumber}"
};
现在,如果所有query
属性填充此工作正常。但是,我意识到如果我只有Country
的价值,那么在国家名称之前会放置四个额外的空格。
在这种情况下customer.CustomerAddress
变成" United Kingdom"
。
调试时,我在查询上放置了一个断点,我可以看到query.Country
前面没有空白,它包含United Kingdom
。
我知道我可以使用Trim()
来修剪任何空白区域,但我想知道为什么我会得到这种行为。
我想避免任何空格如果任一
- CustomerAddress的
- 市
- 国家
- 邮编
- 国家
在查询空结果集。
,让您的代码清洁条件运算符的(string.IsNullOrWhiteSpace(query.City) ? "" : " " + query.City
为每个属性)的溶液是添加将被打印到阵列中的所有属性,并加入那些具有空间时,不是空白:
var addressFields = new string[]
{
query.CustomerAddress,
query.City,
query.State,
query.Zip,
query.Country,
}
string address = string.Join(" ", addressFields.Where(a => !string.IsNullOrWhiteSpace(a)));
这比我的选择更好地进行清理 – TheLethalCoder
谢谢你,它完美的作品。 – Code
@Code我也编辑了你的问题,只包含相关的部分。请检查它,看看它是否仍然问你想要回答的问题。 – CodeCaster
{query.County}
在它前面有一个空格。由于所有其他值都是空的,因此您的结果看起来像[space]YourCountry
。
因为你已明确声明它们是字符串中的空格。请看下面的例子:
string var1 = "hello";
string var2 = "world";
string s = $"{var1} {var2}";
这将打印:
的hello world
现在,如果你设置var1
为空或:
var1 = "";
您将得到:
(空间)世界
因为你明确指出为了有内插字符串中的空间。为了解决这个问题,我会拆分空格,删除空的条目并加入一个空格:
var newS = string.Join(" ", s.Split(" ", StringSplitOptions.RemoveEmptyEntires));
这看起来不像时间敏感的代码,但建立一个字符串只在以后再次分裂它听起来并不理想。但它是解决方案,所以有一个upvote。 – CodeCaster
真的不清楚你说的空白在哪里出现。您的问题是:_“如果我没有城市,我如何防止CustomerAddress和State之间出现两个空格”_? – CodeCaster
@CodeCaster它出现在国家名前 – Code
是的,如果你的查询包含除“Country”之外的所有属性的空值,那么在国家名前面会有四个空格。请阅读[问]并提供[mcve],包括示例输入和输出,并解释您想要更改的内容。 – CodeCaster