c# - .NET 中的字符串标记

标签 c# .net vb.net

我正在用 .NET 编写一个应用程序,它将根据一些输入生成随机文本。因此,如果我有像 “我喜欢你的 {lovely|nice|great} dress” 这样的文本,我想从 lovely/nice/great 中随机选择并在文本中使用它。欢迎使用 C# 或 VB.NET 提出任何建议。

最佳答案

您可以使用正则表达式替换每个 {...}Regex.Replace函数可以取 MatchEvaluator它可以执行从选项中选择随机值的逻辑:

Random random = new Random();
string s = "I love your {lovely|nice|great} dress";
s = Regex.Replace(s, @"\{(.*?)\}", match => {
    string[] options = match.Groups[1].Value.Split('|');
    int index = random.Next(options.Length);
    return options[index];
});
Console.WriteLine(s);

示例输出:

I love your lovely dress

Update: Translated to VB.NET automatically using .NET Reflector:

Dim random As New Random
Dim s As String = "I love your {lovely|nice|great} dress"
s = Regex.Replace(s, "\{(.*?)\}", Function (ByVal match As Match) 
    Dim options As String() = match.Groups.Item(1).Value.Split(New Char() { "|"c })
    Dim index As Integer = random.Next(options.Length)
    Return options(index)
End Function)

关于c# - .NET 中的字符串标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2952677/

相关文章:

c# - 遍历 .json 文件中的每个项目

c# - 从连接的 TcpClient 获取 UdpClient?

c# - .Net中如何连接mysql数据库

c# - 删除 EF Core 1.0 RC2(以前的 EF 7 RC2)中的自动增量

.net - StopWatch.ElapsedTicks 和 StopWatch.Elapsed.Ticks 总是一样的吗?

.net - 如何硬编码服务的默认 WCF 端点?

c# - 从 Visual Studio 2010 SP1 中的 VB.NET 项目搜索引用时出现问题

vb.net - Infragistics:UltraGrid 中的 UltraDropDown 禁用编辑文本 (UltraWinGrid.ColumnStyle.DropDownList)

xml - 在 VB.NET XML 文字中设置属性值

c# - 从具有重复 XmlElementAttribute 名称的 XML 中恢复对象