当前位置: 首页 > 编程语言 > C#

SpintaxC#...我该怎么做?分享

时间:2023-04-10 18:29:32 C#

SpintaxC#...我该怎么做?Spintax允许您旋转各种单词和句子,例如:{Hello|Hi}{World|People}!{C{#|++|}|Java}是一种{很棒|令人惊叹}的语言。大括号之间的文本将被随机选择以形成不同的句子。我可能自己想出了一个解决方案,但我遇到的问题是嵌套。有时嵌套可以很深。处理嵌套的可能解决方案是什么?我无法收集所需的逻辑。不要担心嵌套,只需按如下方式迭代进行:找到字符串中第一个具有{...}且没有其他花括号的序列。在你的情况下,那是{Hello|Hi}。如果不是,转到第3步。抓住所有可能性并随机选择一个,用它的值替换大括号部分。然后回到第一步,就是你修改的字符串了。假设您有一个略有缺陷的随机数生成器,它总是返回零。您的字符串修改历史将是:a/{Hello|Hi}{World|People}!{C{#|++|}|Java}是一种{很棒|令人惊叹}的语言。b/你好{世界|人们}!{C{#|++|}|Java}是一种{很棒|令人惊叹}的语言。c/你好世界!{C{#|++|}|Java}是一种{很棒|令人惊叹}的语言。d/世界您好!{C#|Java}是一种{很棒|令人惊叹}的语言。e/世界您好!C#是一个{棒极了|惊人的}语言。f/世界您好!C#是一种很棒的语言。特别注意从(c)到(d)的过渡。因为我们正在寻找第一个没有括号的大括号部分,所以我们在{C{#|++|}|Java}之前执行{C{#|++|}|Java}。您现在需要添加的可能是{,}或|在您的实际文本中-这些将需要以某种方式转义以保护它们免于修改引擎。这是一个显示此内容的小型C#程序。鉴于我对该语言的相对缺乏经验,这可能并不那么令人印象深刻,但它说明了这个过程。使用系统;使用System.Text.RegularExpressions;namespaceConsoleApplication1{classProgram{staticstringspintax(Randomrnd,stringstr){//遍历字符串直到所有模式都用完。字符串模式="{[^{}]*}";匹配m=Regex.Match(str,pattern);while(m.Success){//获取随机选择并替换模式match.stringseg=str.Substring(m.Index+1,m.Length-2);string[]choices=seg.Split('|');str=str.Substring(0,m.Index)+choices[rnd.Next(choices.Length)]+str.Substring(m.Index+m.Length);m=Regex.Match(str,pattern);}//返回修改后的字符串。返回海峡;}staticvoidMain(string[]args){Randomrnd=newRandom();stringstr="{Hello|Hi}{World|People}!{C{#|++|}|Java}是一种{很棒|令人惊叹}的语言。";Console.WriteLine(spintax(rnd,str));控制台.ReadLine();在一个示例中,输出正在运行hello,world!C#是一种很棒的语言。我倾向于创建一个递归方法来处理解析。编写一个方法,它接受一个字符串,扫描第一级括号,并从伴随的选项中随机选择。然后,该方法将使用所选的选项字符串调用自身,然后再将其插入到最终结果中。C#学习教程就是这些:SpintaxC#...我该怎么做?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: