如何只查找字符串中的第一个和最后一个数字字符

时间:2017-06-14 06:31:42

标签: c# regex

如何只查找字符串中的第一个和最后一个数字字符?

  

例如:字符串a = 1234查找结果:14,但不是1234或23

用于格式化字符串。并从文件加载。所以只有正则表达式

加载正则表达式解析器:

Match resultMatch = new Regex(regex).Match(sourceString);
        return resultMatch.Success ? resultMatch.Value : null;

2 个答案:

答案 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();