在C#中修剪字符串时遇到问题

时间:2015-05-26 12:59:16

标签: c# trim

我在修改C#

中的单词时遇到问题

例如,我有一个string =“StackLevelTwoItem”,我需要从这个字符串中拉出“Two”或“Three”。

StackLevelTwoItem - >我应该得到“两个” StackLevelThreeItem - >我应该得到“

......等等......

有人可以帮忙吗?

谢谢

3 个答案:

答案 0 :(得分:2)

对于给出的两个例子:

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长度。

答案 1 :(得分:0)

我会在此案例中使用RegEx

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

答案 2 :(得分:0)

以下是使用Regex的示例。

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;
}