【发布时间】:2017-07-01 19:27:54
【问题描述】:
我有 2 个字符串。这 2 个字符串的大小可能不同。我想看看这两个字符串找到匹配的序列。一旦找到更改,我想在 Capital 中打印该单词,然后继续在我的字符串中,直到找到另一个更改,依此类推。我不知道我会怎么做我试着把单词看成一个整体,但我遇到了问题。基本上我将有 2 个类似 string one="This is a new value" 和 string two= "This This is a new also brand value" 的字符串。我想从一开始就遍历每个字符串并找到匹配的序列,例如 "This is" 在字符串处停止,意识到它随着字符串的添加而改变 改变它转大写然后继续。预期输出="THIS this is a new ALSO BRAND value "
我正在尝试的一些代码。我认为这不是正确的方法。
static void Main(string[] args)
{
string one = "This is a new value";
string two = "This This is a new also brand value";
var coll = two.Split(' ').Select(p => one.Contains(p) ? p : p.ToUpperInvariant());
Console.WriteLine(string.Join(" ", coll));
Console.ReadKey();
}
【问题讨论】:
-
在你的第一个例子中,字符串 one="This is text one" and string two="This is string text two not string one" 你的预期输出是什么 - "This is STRING text TWO NOT STRING一个”或“这是字符串文本,不是字符串一”。如果交换两个字符串,您的预期结果是什么?
-
我建议阅读一些算法,例如 jaro-winkler en.m.wikipedia.org/wiki/Jaro–Winkler_distance
-
@PaulF 第二个例子是我所期望的。
-
@PaulF 类似这样的东西
value1="This is a new Value";value2="This is also a new value";output="This is ALSO a new value" -
如果没有任何匹配结果应该是什么: value1="This is a new Value"; value2="abc def ghi jkl mno";
标签: c# string-matching