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

问题描述:

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

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

它用于格式化的字符串。并从文件加载。因此,只有正则表达式

加载正则表达式解析器:

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

第一个是[0],最后一个是[a.Length - 1]。 –

+1

好吧,[mcve]!我们需要一些输入,只是一个例子来显示基本逻辑不是一个例子输入。那么我们需要你有什么尝试:你有任何代码?因为它真的很简单或者真的不太清楚。 –

+0

简单的google-search:获取列表中的第一个元素+获取列表中的最后一个元素。 – HimBromBeere

我不知道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; 

假设“字母”意思是0-9,az和AZ,我们可以用这个正则表达式找到第一个和最后一个字母数字字母:[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(); 
+0

如果输入只有一个(aplhanumeric)字符长,例如“a”怎么办? 'var first'将是'a','var last'也将是'a',这在技术上是正确的,但可能不是,OP想要的是什么。虽然我也不知道它是否应该抛出异常,或者只返回一个带有单个字符(“a”)的字符串而不是带有总是两个字符(“aa”)的字符串(这可能导致混淆)。 –