C# 如果布尔值为false,则在字符串中添加逗号和其他单词

C# 如果布尔值为false,则在字符串中添加逗号和其他单词,c#,string,C#,String,我有3个布尔人: bool Boat, Plane, Car; 和3个字符串: string ReloadBoat, ReloadPlane, ReloadCar; 根据这些布尔值,如果为false,我需要在字符串和单词之间以及最后两个字符串之间添加逗号 string errorMessage = (Boat ? "" : " " + ReloadBoat + ", ") + (Plane ? "" : " " + ReloadPlane + ", ") + (Car ? "" : " "

我有3个布尔人:

bool Boat, Plane, Car;
和3个字符串:

string ReloadBoat, ReloadPlane, ReloadCar;
根据这些布尔值,如果为false,我需要在字符串和单词之间以及最后两个字符串之间添加逗号

string errorMessage = (Boat ? "" : " " + ReloadBoat + ", ") + (Plane ? "" : " " + ReloadPlane + ", ") + (Car ? "" : " " + ReloadCar);
errorMessage = errorMessage.TrimEnd(new[] { ' ', ',' });
对于上面的问题,我得到的是,如果船和飞机都是假的,我得到的错误消息是ReloadBoat,ReloadPlane

我希望它是重新装载的船和飞机

如果所有3个布尔值都为false,则错误消息应为:
重新装载船只、重新装载飞机和重新装载汽车。

您可以在代码中使用此解决方案注释:

字符逗号=','; 字符串errorMessage=船?:+重装船+逗号+平面?:+重载平面+逗号+汽车?:+换装车+逗号; //首先修剪最后一个逗号 errorMessage=errorMessage.TrimEndcomma; //然后将最后一个分隔逗号替换为“and” int place=errorMessage.LastIndexOfcomma; //仅当找到逗号时 如果位置>=0 errorMessage=errorMessage.Removeplace、1.Insertplace和;
您可以在代码中使用此解决方案注释:

字符逗号=','; 字符串errorMessage=船?:+重装船+逗号+平面?:+重载平面+逗号+汽车?:+换装车+逗号; //首先修剪最后一个逗号 errorMessage=errorMessage.TrimEndcomma; //然后将最后一个分隔逗号替换为“and” int place=errorMessage.LastIndexOfcomma; //仅当找到逗号时 如果位置>=0 errorMessage=errorMessage.Removeplace、1.Insertplace和; 输出:

ReloadBoat and ReloadPlane
输出:

ReloadBoat and ReloadPlane

您可以有条件地填充一个列表,然后使用一行创建消息,以这种方式允许添加其他项

// start with a list
var errItems = new List<string>();
if (boat) errItems.Add(reloadBoat);
if (plane) errItems.Add(reloadPlane);
if (car) errItems.Add(reloadCar);

// make the error message     
var errMsg =
    errItems.Count > 1 ?
    $"{string.Join(", ", errItems.ToArray(), 0, errItems.Count - 1)} and {errItems[errItems.Count - 1]}" :
    errItems.Count > 0 ? errItems[0] : "";

您可以有条件地填充一个列表,然后使用一行创建消息,以这种方式允许添加其他项

// start with a list
var errItems = new List<string>();
if (boat) errItems.Add(reloadBoat);
if (plane) errItems.Add(reloadPlane);
if (car) errItems.Add(reloadCar);

// make the error message     
var errMsg =
    errItems.Count > 1 ?
    $"{string.Join(", ", errItems.ToArray(), 0, errItems.Count - 1)} and {errItems[errItems.Count - 1]}" :
    errItems.Count > 0 ? errItems[0] : "";

您可以创建一个列表来保存所有错误字符串

List<string> msgs = new List<string>();

if(!Boat)
    msgs.Add(ReloadBoat);
if(!Plane)
    msgs.Add(ReloadPlane);
if(!Car)
    msgs.Add(ReloadCar);

您可以创建一个列表来保存所有错误字符串

List<string> msgs = new List<string>();

if(!Boat)
    msgs.Add(ReloadBoat);
if(!Plane)
    msgs.Add(ReloadPlane);
if(!Car)
    msgs.Add(ReloadCar);

如果您只有3个布尔值及其字符串,那么如果您只使用switch语句或表驱动方法,代码可能会更清晰,请参见示例字符串。Join帮助您如果您只有3个布尔值及其字符串,如果您只使用switch语句或表驱动方法,代码可能会更清晰,请参阅以获取示例String.Join帮助您