找到某些单词后显示字符串

时间:2017-08-26 13:59:10

标签: c# string indexof

基本上我要做的是找到以“/ Game / Mods”开头的第一个字符串,但问题是如何告诉程序在哪里结束字符串?这是一个字符串的示例:string example

正如你可以看到字符串以“/ Game / Mods”开头,我希望它在单词“TamingSedative”之后结束,问题是结束字(TamingSedative)对于它必须检查的每个文件都是不同的,例如:example 2

在那里你可以看到结束词现在是“WeapObsidianSword”(而不是TamingSedative)所以基本上字符串必须在遇到“NUL”时结束但是我如何在c#代码中指定它?

3 个答案:

答案 0 :(得分:0)

这是一个使用Regex的简单示例。

Dim yourString As String = "/Game/Mods/TamingSedative/PrimalItemConsumable_TamingSedative"
Dim M As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(yourString, "/Game/Mods/(.+?)/")
MessageBox.Show(M.Groups(0).Value) 'This should show /Game/Mods/TamingSedative/
MessageBox.Show(M.Groups(1).Value) 'This should show TamingSedative

答案 1 :(得分:0)

由于您只需要第一次出现,这是我能想到的最简单的解决方案:

(如果您无法看到图片,请点击它以在新标签页中打开)

enter image description here

修改

如果字符串中不保证存在这样的路径,您可以在继续使用Substring之前进行额外检查,如下所示:

int exists = fullString.IndexOf("/Game/Mods");
if (exists == -1) return null;

注意:我已经包含“ENDED”,以便查看是否包含任何NULL字符(空格)

答案 2 :(得分:0)

从您的评论:"字符串只需从/ Game / Mods开始,到达空白时结束"。

在这种情况下,您可以使用Linq轻松获取匹配项(假设filePath是一个包含文件路径的字符串):

var text = File.ReadAllText(filePath);

var matches = text.Split(null).Where(s => s.StartsWith("/Game/Mods"));

而且,如果你只需要第一次出现,那就是:

var firstMatch = matches.Any() ? matches.First() : null;

选中post