C#如何在字符串中使用语句来解析文本

埃里克

我从事基于文本的游戏已有一段时间了,遇到的一个问题是,我必须根据在整个游戏中可能发生变化的变量编写不同的段落。

我到处寻找解析器之类的东西,但大多数都是找到的正则表达式,在这里我认为它没有用。我正在寻找某种方式来查看这样的字符串。

String x = "'It's nice to meet you [if (Female){ "Miss, what's a pretty young thing like you doing out in the dessert."} else { "Sir, what can I do for ya?"}]' the man asks in a drawl.";

目前,我必须编写与if语句分开的段落,但是编写起来会花费更长的时间,并且很难保持对话的畅通。我的目标是要有一个类,可以根据整个游戏中变化的变量在执行时将字符串发送到该类并获取格式化的版本。

乔治·沃尔

如果这是您的目标,那么c#确实不是您的工具。它只是不提供此功能,尽管它将在6.0版中提供字符串插值,但我怀疑它是否会支持您想要的完整语句。这种功能根本不是语言的目标,并且实际上会使主要目标之一(一流的工具支持)更加困难。

一个有趣的替代方法可能是编写代码来在Powershell中进行插值,该动态代码是动态的,支持全字符串插值,自Windows XP 3开始安装在每台Windows机器上,并且可以与任何.Net语言进行本机互操作。

您甚至可以通过仅针对一个组件调用powershell来将其余代码包含在c#中,从而实现此目的

由于ifs的powershell语法与c#非常相似,因此您的代码可能类似于

interpolate(@"'It's nice to meet you $(if (Female){ ""Miss, what's a pretty 
young thing like you doing out in the dessert.""} else { ""Sir, what can I 
do for ya?""})' the man asks in a drawl.");

话虽这么说,做到这一点并非易事,但如果必须使用c#代码文件中的字符串插值,它可能是您的最佳选择。

其他选择:

  • 相同,但使用支持插值而不是Powershell的任何其他.Net语言
  • 将字符串编写为Razor模板,并使用RazorEngine进行编译
  • 使用即将发布的Roslyn编译器中的功能将您的字符串编译为c#。

这些东西都不是容易的,但是一切都是可行的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C#中使用regex.replace替换url字符串中间的文本

来自分类Dev

在C#中使用语句用法

来自分类Dev

如何在Java中使用分号解析字符串

来自分类Dev

如何在C#中解析示例字符串

来自分类Dev

如何在C#中解析示例字符串

来自分类Dev

如何在 Haskell 中使用解析器来查找字符串中某些子字符串的位置?

来自分类Dev

如何在C#中使用linq在以“ <input”开头的字符串中拆分字符串

来自分类Dev

如何在 C# 中使用字符串键和值创建字符串多维数组?

来自分类Dev

如何在Swift中使用属性字符串附加属性文本字符串

来自分类Dev

如何在C#中使用newtonsoft .json从json字符串获取值

来自分类Dev

如何在Angular ng-init中使用C#字符串数组?

来自分类Dev

如何在WPF Webbrowser中使用C#将字符串插入输入字段

来自分类Dev

如何在C#中使用逐字字符串?

来自分类Dev

如何在C#中使用LINQ转换JSON字符串

来自分类Dev

如何在C#中使用HttpPostedFileBase连接字符串?

来自分类Dev

如何在C#中使用Contains和Linq方法在字符串中搜索数字?

来自分类Dev

如何在Nlua中使用C#静态字符串

来自分类Dev

如何在C#中使用Convert.ToSingle()将字符串更改为int

来自分类Dev

如何在C#中使用字符串格式重命名文件?

来自分类Dev

如何在Angular ng-init中使用C#字符串数组?

来自分类Dev

如何在Linq查询C#中使用子字符串

来自分类Dev

如何在C#中使用Regex获取子字符串

来自分类Dev

如何在C#中使用定义的对象而不是字符串?

来自分类Dev

如何在 C# 中使用带有间隔字符串的 Select

来自分类Dev

如何在 C# 中使用 tcp 发送字符串数组

来自分类Dev

如何在SQL Server中使用预定义的特殊字符来修剪字符串?

来自分类Dev

如何在Python后置断言正则表达式(?<= \\)中使用'\'来匹配类似C ++的引号字符串

来自分类Dev

如何在Python中使用CSV解析器解析字符串?

来自分类Dev

我如何在字符串中使用br来正确显示带有html标签的字符串?

Related 相关文章

  1. 1

    如何在C#中使用regex.replace替换url字符串中间的文本

  2. 2

    在C#中使用语句用法

  3. 3

    如何在Java中使用分号解析字符串

  4. 4

    如何在C#中解析示例字符串

  5. 5

    如何在C#中解析示例字符串

  6. 6

    如何在 Haskell 中使用解析器来查找字符串中某些子字符串的位置?

  7. 7

    如何在C#中使用linq在以“ <input”开头的字符串中拆分字符串

  8. 8

    如何在 C# 中使用字符串键和值创建字符串多维数组?

  9. 9

    如何在Swift中使用属性字符串附加属性文本字符串

  10. 10

    如何在C#中使用newtonsoft .json从json字符串获取值

  11. 11

    如何在Angular ng-init中使用C#字符串数组?

  12. 12

    如何在WPF Webbrowser中使用C#将字符串插入输入字段

  13. 13

    如何在C#中使用逐字字符串?

  14. 14

    如何在C#中使用LINQ转换JSON字符串

  15. 15

    如何在C#中使用HttpPostedFileBase连接字符串?

  16. 16

    如何在C#中使用Contains和Linq方法在字符串中搜索数字?

  17. 17

    如何在Nlua中使用C#静态字符串

  18. 18

    如何在C#中使用Convert.ToSingle()将字符串更改为int

  19. 19

    如何在C#中使用字符串格式重命名文件?

  20. 20

    如何在Angular ng-init中使用C#字符串数组?

  21. 21

    如何在Linq查询C#中使用子字符串

  22. 22

    如何在C#中使用Regex获取子字符串

  23. 23

    如何在C#中使用定义的对象而不是字符串?

  24. 24

    如何在 C# 中使用带有间隔字符串的 Select

  25. 25

    如何在 C# 中使用 tcp 发送字符串数组

  26. 26

    如何在SQL Server中使用预定义的特殊字符来修剪字符串?

  27. 27

    如何在Python后置断言正则表达式(?<= \\)中使用'\'来匹配类似C ++的引号字符串

  28. 28

    如何在Python中使用CSV解析器解析字符串?

  29. 29

    我如何在字符串中使用br来正确显示带有html标签的字符串?

热门标签

归档