.net C中的子串、替换、查找下一个单词等#

.net C中的子串、替换、查找下一个单词等#,.net,string,replace,substring,.net,String,Replace,Substring,这似乎很棘手,我在最后一个障碍上绊倒了。我尝试了不同的逻辑,但效果相当不错。所以我不提供我的代码。但我会发布我需要的输出。这是一个逻辑问题,我想,尽管我确信我确实需要比.Substring()和.Replace()更了解方法 输入是一个字符串。输出是输入字符串的一种改变形式。这是我想要的 输入:“快乐” 输出:“快乐” 输入:“他是个骗子” 输出:“他是个骗子” 输入:“他告诉了我” 输出:“他告诉我” 输入:“这是我的密码” 输出:“这是我的p…r o t” 有时,在我的程序中,字符串中很少有

这似乎很棘手,我在最后一个障碍上绊倒了。我尝试了不同的逻辑,但效果相当不错。所以我不提供我的代码。但我会发布我需要的输出。这是一个逻辑问题,我想,尽管我确信我确实需要比
.Substring()
.Replace()
更了解方法

输入是一个字符串。输出是输入字符串的一种改变形式。这是我想要的

输入:“快乐” 输出:“快乐”

输入:“他是个骗子” 输出:“他是个骗子”

输入:“他告诉了我” 输出:“他告诉我”

输入:“这是我的密码” 输出:“这是我的p…r o t”

有时,在我的程序中,字符串中很少有特定的单词可以用空格分隔(parrot,在上面的示例中被欺骗)。我想发生的是

      .Replace("a ", "a...");
当单词中有“a”时,用空格分隔(p a r r o t,c h e a t e d),我想在“a”后面加三个点。我能做到。使我的问题复杂化的是,“a”也是英语中用来表示“一”(芒果、苹果等)的常用词。我不希望程序在这样的“a”之后加上三个点。下面是一个例子

输入:“m a n g o是一种水果” 输出:“m a…n g o是一种水果”

如何做到这一点?如果它按照我的要求给出输出,任何逻辑都可以。我希望我能把我的要求说清楚。如果我错过了什么,请问。
谢谢

我不确定,但你可以试试,
查找子字符串“a”,获取下一个字符串,如果出现thr后的字符串类似于字符空间字符空间,则将该字符串a替换为…。

这将在您提到的情况下起作用

string input = "once a c h e a t e r always a cheater";
string output = Regex.Replace(input, @"(?<=\b\w )a (?=\w\b)", "a...");
Console.WriteLine(output); // once a c h e a...t e r always a cheater
string input=“一旦成为一个骗子,他就永远是一个骗子”;

string output=Regex.Replace(input,@)(?是的,我知道。但我的问题是,即使对于普通的“a”,它也会这样做"我们使用英语。这不应该发生。我在文章的结尾提到了这一部分。请阅读。如果你有想法,你可以发布代码本身吗?但是在a的正常出现时,在a之后会有一个单词,你可以检查单词,例如空格,其他字符空间,其他字符空间,然后替换a。为此,你需要cr吃一个数组,在oth位置,空格1位置,字符2位置,空格3位置和字符4位置做一个,停止前面的搜索,检查这个模式是否遵循,用a替换a…这是核心逻辑,你是对的。这是我尝试过的。但我在最后一个障碍上绊倒了。如果你能提供代码剪贴,我将不胜感激宠物本身。如果我是你,我会阅读解析器。如果你有这样的规则,你已经离开了简单文本操作的领域。你需要将每个组件转换为一个令牌,并从逻辑上确定令牌的组合产生什么输出。我不知道什么是parses和什么是token。我所知道的只是C#.Ca中的.Substring和.Replace方法n你提供代码?我很好奇你为什么要这样做?我很难想象这样做有什么意义?@Mark,lol。是的,这确实是一个奇怪的情况。我在程序中使用espeak文本到语音引擎,我所做的是从后台运行命令行作为一个单独的进程。因此在拼写工具中,我让应用程序一个字母一个字母地听写拼写。因此,如果我键入“ye l o w”,它会读取每个字母y、e、l、l、o和w。但奇怪的是,如果有字母“a”如“c h e a t e r”,字母“a”的读取速度太快,根本不清楚。所以我想在读取“a”后再延迟一段时间做的诀窍。希望答案是:PThanks,这奏效了。我猜我可以通过使用正则表达式轻松做到这一点。我不是正则表达式的专家。谢谢。我使用了这个:使用System.Text.RegularExpressions;@Mark,如果单词以“a”开头,这个方法不会插入“…”。假设输入是“thin a I r”,输出是相同的。不是“瘦a…i r”。可以做什么?@nawful:是的。只需将正则表达式更改为
@“a(?=\w\b)”
。您还没有明确定义…的出现时间和地点,因此很难给您一个明确的答案。例如,“a c h e a t r”.第一个“a”是“acheater”的一部分还是它自己的词?@Mark:在“a c h e a t e r”中,我希望输出是“a c h e a…t e r”。但考虑到你使用的逻辑,我知道这很难。但没关系。我更喜欢输出“a…c h e a…t e r”而不是“a c h e a…t e r”(考虑到我有很多以“a”)与您当前的逻辑一致。虽然您的新代码不能完全满足我的要求,但这比以前的代码做得更好。因此,让我编辑它。非常感谢……)不客气。如果您想要更好的结果,您必须使用字典,否则就无法知道在哪里拆分它。