获取字符串中字符边界内的特定字符c#

Get specific characters within characters' boundaries in a string c#

这里是这方面的新手。

虽然像下面这样的代码行可以 return 字符串中的整组数字(0 到 9):

return new string(Entry2BConsidered.Where(char.IsLetter).ToArray());

是否有类似的方式来 return 仅限边界/限制内的字符,例如 (0 到 5) 或 (A 到 E) 或 (a 到 e)?

例如在“AbcdE”这样的输入中如何return b 到 d。

类似于:

public class Program
{
    public static void Main()
    {
        char StartChar = 'b'; char EndChar = 'd';
        String MainString = "AbdcdEAabxdcLdE";
        Console.WriteLine("bdcdabdcd"); //Only characters from b to d required
    }
}

谢谢

可能最简单的方法是正则表达式。但是然后我取决于你真正想要的细节。你想要第一个 b 和最后一个 d 之间的所有东西吗?那很容易

var input = "AbdcdEAabxdcLdE";
var match = System.Text.RegularExpressions.Regex.Match(input, "b.*d");

if (match.Success)
    Console.WriteLine($"Success: {match.Value}");

对于不区分大小写的搜索,您有两个选项搜索 bB 作为起始字符和 dD 作为结束字符

var match = System.Text.RegularExpressions.Regex.Match(input, "[bB].*[dD]");

或通过传递选项使搜索不区分大小写:

var match = System.Text.RegularExpressions.Regex.Match(input, "b.*d", System.Text.RegularExpressions.RegexOptions.IgnoreCase);

如果您想要字符串的一部分,但只想要包含字母 bd 的部分,您可以这样做:

var match = System.Text.RegularExpressions.Regex.Match(input, "[b-d]+", System.Text.RegularExpressions.RegexOptions.IgnoreCase);

编辑:添加版本以过滤给定字符以外的所有内容

如果您想要 bd 之间的所有字符并过滤掉您要写的所有其他字符:

var input = "AbdcdEAabxdcLdE";
var matches = System.Text.RegularExpressions.Regex.Matches(input, "[b-d]", System.Text.RegularExpressions.RegexOptions.IgnoreCase);

var result = string.Join("", matches.Select(m => m.Value));
Console.WriteLine(result);