获取字符串中字符边界内的特定字符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}");
对于不区分大小写的搜索,您有两个选项搜索 b
或 B
作为起始字符和 d
或 D
作为结束字符
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);
如果您想要字符串的一部分,但只想要包含字母 b
到 d
的部分,您可以这样做:
var match = System.Text.RegularExpressions.Regex.Match(input, "[b-d]+", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
编辑:添加版本以过滤给定字符以外的所有内容
如果您想要 b
和 d
之间的所有字符并过滤掉您要写的所有其他字符:
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);
这里是这方面的新手。
虽然像下面这样的代码行可以 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}");
对于不区分大小写的搜索,您有两个选项搜索 b
或 B
作为起始字符和 d
或 D
作为结束字符
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);
如果您想要字符串的一部分,但只想要包含字母 b
到 d
的部分,您可以这样做:
var match = System.Text.RegularExpressions.Regex.Match(input, "[b-d]+", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
编辑:添加版本以过滤给定字符以外的所有内容
如果您想要 b
和 d
之间的所有字符并过滤掉您要写的所有其他字符:
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);