如何只查找字符串中的第一个和最后一个数字字符?
例如:字符串a = 1234查找结果:14,但不是1234或23
用于格式化字符串。并从文件加载。所以只有正则表达式
加载正则表达式解析器:
Match resultMatch = new Regex(regex).Match(sourceString);
return resultMatch.Success ? resultMatch.Value : null;
答案 0 :(得分:1)
我不太了解C#,所以这里有一些或多或少的伪代码:
char first;
char last;
int i;
for (i = 0; i < a.Length; i++)
{
if (a[i] matches "[A-Za-z0-9]")
{
first = a[i];
break;
}
}
int j;
for (j = a.Length - 1; j > i; j--)
{
if (a[j] matches "[A-Za-z0-9]")
{
last = a[j];
break;
}
}
return first + last;
答案 1 :(得分:0)
假设“字母数字”表示0-9,a-z和A-Z,我们可以使用此正则表达式查找第一个和最后一个字母数字字母:[0-9a-zA-Z]
。
// I used "1234." to show that it won't match non-alphanumeric characters
var matches = Regex.Matches("1234.", "[0-9a-zA-Z]");
var first = matches[0].Value;
var last = matches[matches.Count - 1].Value;
假设“字母数字”表示导致char.IsLetterOrDigit
返回true的任何字符,您可以使用:
var query = "1234.".Where(char.IsLetterOrDigit);
var first = query.First();
var last = query.Last();
编辑:根据您的评论,您只需要数字字符,然后尝试:
var query = "1234.".Where(char.IsDigit); // you can also use IsNumber here,
// they produce slightly different results,
// choose the one that fits your needs
var first = query.First();
var last = query.Last();