如何仅查找字符串中的第一个和最后一个数字字符
问题描述:
如何仅查找字符串中的第一个和最后一个数字字符?如何仅查找字符串中的第一个和最后一个数字字符
例如:字符串= 1234查找结果:14,但不是1234或23
它用于格式化的字符串。并从文件加载。因此,只有正则表达式
加载正则表达式解析器:
Match resultMatch = new Regex(regex).Match(sourceString);
return resultMatch.Success ? resultMatch.Value : null;
答
我不知道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”)的字符串(这可能导致混淆)。 –
第一个是[0],最后一个是[a.Length - 1]。 –
好吧,[mcve]!我们需要一些输入,只是一个例子来显示基本逻辑不是一个例子输入。那么我们需要你有什么尝试:你有任何代码?因为它真的很简单或者真的不太清楚。 –
简单的google-search:获取列表中的第一个元素+获取列表中的最后一个元素。 – HimBromBeere