在c#中有一个字符串修剪的问题



我有一个关于在c#中修剪下面单词的问题

例如,我得到一个字符串= "StackLevelTwoItem",我需要从这个字符串中拉出"Two"或"Three"。

StackLevelTwoItem ->我应该得到"Two"
StackLevelThreeItem ->应该得到"Three"

…等等…

有人能帮忙吗?

谢谢

对于给出的两个例子:

const string prefix = "StackLevel";
const string suffix = "Item";
public static string GetCentralPart(string str)
{
    if (str == null)
    {
        return str;
    }
    if (!str.StartsWith(prefix) || !str.EndsWith(suffix))
    {
        return str;
    }
    return str.Substring(prefix.Length, str.Length - prefix.Length - suffix.Length);
}

使用:

string str = "StackLevelThreeItem";
string centralPart = GetCentralPart(str);

代码是相当线性的…唯一有趣的点是使用一些const string作为前缀/后缀,使用StartsWith/EndsWith来检查字符串是否确实具有前缀/后缀,以及如何计算Substring长度。

对于这种情况,我将使用RegEx

string Result = Regex.Match("StackLevelOneItem", @"(?<=StackLevel)[w]*(?=Item)").Value; 

下面是一个使用正则表达式的例子。

static void Main(string[] args)
{
    var l2 = GetLevel("StackLevelTwoItem");     // returns "Two"
    var l3 = GetLevel("StackLevelThreeItem");   // returns "Three"
    var l1 = GetLevel("StackLvlOneItem");       // returns empty string
}
static string GetLevel(string input)
{
    var pattern = "StackLevel(.*)Item";
    var match = Regex.Match(input, pattern);
    if (match.Groups[1].Success)
        return match.Groups[1].Value;
    else
        return String.Empty;
}

最新更新