gpt4 book ai didi

c# - 将 "mask"应用于字符串

转载 作者:可可西里 更新时间:2023-11-01 07:51:19 27 4
gpt4 key购买 nike

我有一个标志枚举 (int) 掩码,我需要将它转换为表示星期几的字符串。

说这是完整的字符串和任意掩码

strFullWeek = "MTWtFSs"
strWeekMask = "0100110"
-----------------------
strResult = "-T--FS-"

你建议用什么方法从 full week 和 mask 字符串中获取 strResult?

更新

这是我的“整个上下文”(VB.NET)

<Flags()> Public Enum Week
Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
Friday = 16
Saturday = 32
Sunday = 64
End Enum

Dim mondayOrSunday = Week.Monday Or Week.Sunday
Dim strDays = "MTWtFSs"

Dim strMondayOrSundayBinary = Convert.ToString(
mondayOrSunday, 2).PadRight(7, CChar("0"))

Dim charMondayOrSunday = strDays.Zip(
strMondayOrSundayBinary,
Function(day, mask) If(mask = CChar("1"), day, CChar("-"))).ToArray()

Dim strMondayOrSunday = New String(charMondayOrSunday)

Console.WriteLine("{0} I see as {1}",
mondayOrSunday,
strMondayOrSunday)

最佳答案

有一种相当简洁的 LINQ 方式:

var chars = strFullWeek.Zip(strWeekMask, (day, mask) => mask == '1' ? day : '-'))
.ToArray();
string text = new string(chars);

它不会非常有效,但它可能足够好......

编辑:好的,假设您对枚举版本的 C# 代码感到满意

// TODO: Rename "Week" to comply with .NET naming conventions
Week mask = Week.Monday | Week.Sunday;
var chars = strFullWeek.Select((value, index) => (int) mask & (1 << index) != 0)
? value : '-')
.ToArray();
string text = new string(chars);

关于c# - 将 "mask"应用于字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12530598/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com