我有一个带有一些字母和数字的字符串。这里有一个例子:
OG000134W4.11
我必须修剪所有的第一个字母和第一个零来得到这个:
134W4.11
我还需要从他将要遇到的第一个字母中删除字符,最后再进行检索:
134
我知道我可以使用多个“修剪”来做到这一点,但我想知道是否有一种有效的方法可以做到这一点。
感谢。
答案 0 :(得分:4)
如果您不想使用正则表达式,那么Linq就是您的朋友
[Test]
public void TrimTest()
{
var str = "OG000134W4.11";
var ret = str.SkipWhile(x => char.IsLetter(x) || x == '0').TakeWhile(x => !char.IsLetter(x));
Assert.AreEqual("134", ret);
}
答案 1 :(得分:2)
这是我要使用的正则表达式
([1-9][0-9]*)[^1-9].*
以下是您可以尝试的一些C#代码
var input = "OG000134W4.11";
var result = new Regex(@"([1-9][0-9]*)[^1-9].*").Replace(input, "$1");
答案 2 :(得分:2)
using System;
using System.Text.RegularExpressions;
namespace regex
{
class MainClass
{
public static void Main (string[] args)
{
string result = matchTest("OG000134W4.11");
Console.WriteLine(result);
}
public static string matchTest (string input)
{
Regex rx = new Regex(@"([1-9][0-9]+)\w*[0-9]*\.[0-9]*");
Match match = rx.Match(input);
if (match.Success){
return match.Groups[1].Value;
}else{
return string.Empty;
}
}
}
}