【发布时间】:2011-04-05 05:18:53
【问题描述】:
这似乎很棘手,我偶然发现了最后一个障碍。我尝试了不同的逻辑,但非常有效。所以我不提供我的代码。但我会发布我需要的输出。我想这是一个逻辑问题,尽管我确信我确实需要知道比.Substring() 和.Replace() 更多的方法。
输入是一个字符串。并且输出是输入字符串的更改形式。这就是我想要的。
输入:“快乐” 输出:“快乐”
输入:“他是个骗子” 输出:“他是个骗子”
输入:“he c h e a t e d me” 输出:“he c h e a...t e d me”
输入:“这是我的 p a r r o t” 输出:“这是我的 p a...r r o t”
在我的程序中,有时字符串中的几个特定单词可以用空格分隔(鹦鹉,在上面的例子中作弊)。我想要发生的是
.Replace("a ", "a...");
每当单词中用空格分隔的单词中有“a”时(p a r r o t, c h e a t e d),我希望三个点跟随在“a”后面。我能做到。使我的问题更加复杂的是“a”也是英语中用来表示“one”(芒果、苹果等)的常用词。我不希望程序在这样的“a”之后添加三个点。下面是一个例子。
输入:“m a n g o is a fruit” 输出:“m a...n g o is a fruit”
如何做到这一点?如果它提供我想要的输出,任何逻辑都可以。我希望我能把我的要求说清楚。如果我错过了什么,请询问。 谢谢
【问题讨论】:
-
如果我是你,我会阅读解析器。如果你有这样的规则,你就离开了简单的文本操作领域。你需要将每个组件变成一个token,并在逻辑上确定token的哪些组合产生什么输出。
-
我不知道什么是解析和什么是令牌。我只知道 C# 中的 .Substring 和 .Replace 方法。可以提供代码吗?
-
我很想知道为什么你想这样做?我很难想象这样的场景有什么意义?
-
@Mark,哈哈。是的,这确实是一个奇怪的案例。我在我的程序中使用 espeak 文本到语音引擎,我所做的就是从后台运行命令行作为一个单独的进程。因此,在拼写工具中,我希望应用程序一个一个地指示拼写 - 一个字母一个字母。因此,如果我输入“y e l l o w”,它会读取每个字母 y、e、l、l、o 和 w。但奇怪的是,如果有像“c h e a t e r”这样的字母“a”,字母“a”被读得太快以至于根本看不清楚。所以我想在阅读“a”后延迟一下。 “a ...”可以解决问题。希望回答:P
标签: .net string replace substring