我试图将产品的标题从Nitric Acid 70% , ACS REAGENT GRADE, 2.5 Liter(7 Lbs) Bottle
分割为Nitric Acid 70%
。在我的代码中,我首先加入了两个以客户名称为关键字的集合。然后我在类扩展列表上做了一个foreach循环,并添加了来自客户和产品的成员。但是,在Title = record.Title,
中,我不希望完整的标题名称只是第一个逗号之前的第一个字符串。我怎样才能做到这一点?我试图使用.split,但我认为我没有正确理解它
private static IEnumerable<SpreadList> Combine(IEnumerable<Address> addresses, IEnumerable<Address> products)
{
var customersandproducts = addresses.Select(x => new { x.Name, x.AddressLine1, x.AddressLine2, x.City, x.State, x.S_OrderId, x.PostalCode })
.Join(products, custs => custs.S_OrderId, prod => prod.P_OrderId,
(custs, prod) => new { custs.Name, prod.Title, prod.ShippingPrice, prod.ItemPrice, prod.Quantity });
var records = new List<SpreadList>();
foreach (var record in customersandproducts)
{
records.Add(new SpreadList()
{
Name = WebUtility.HtmlDecode(record.Name),
Title = record.Title,
ItemPrice = record.ItemPrice,
ShippingPrice = record.ShippingPrice,
Quantity = record.Quantity,
});
}
return records;
}
public class SpreadList
{
public string Name { get; set; }
public string Title { get; set; }
public string ShippingPrice { get; set; }
public string ItemPrice { get; set; }
public string Quantity { get; set; }
}
答案 0 :(得分:1)
使用split是正确的 - split将在指定的分隔符之间创建一个子字符串数组,您所要做的就是获取该数组中的第一个项目。
Title = record.Title.Split(',')[0].Trim();
答案 1 :(得分:1)
我写了一点功能。这可以是命名函数,也可以只是Func<string, string>
:
Func<string, string> GetFirstStringPart = title =>
{
if(string.IsNullOrEmpty(title))
return null; // or string.Empty;
string[] stringParts = title.Split(',');
if(stringParts.Any())
return stringParts.First().Trim();
else
return null; // or string.Empty;
};
foreach (var record in customersandproducts)
{
records.Add(new SpreadList()
{
Name = WebUtility.HtmlDecode(record.Name),
Title = GetFirstStringPart(record.Title),
...
. etc .
使用函数的优点是可以处理任何需要单独处理的特殊情况,例如空字符串或空字符串,或者您可能需要的任何其他逻辑。
答案 2 :(得分:0)
来自https://msdn.microsoft.com/en-us/library/system.string.split(v=vs.110).aspx:
返回一个字符串数组,该数组包含此实例中由指定字符串或Unicode字符数组的元素分隔的子字符串。
因此,如果你想要字符串的第一部分,你可以使用string result = record.Title.split(',')[0]