我在修改C#
中的单词时遇到问题例如,我有一个string =“StackLevelTwoItem”,我需要从这个字符串中拉出“Two”或“Three”。
StackLevelTwoItem - >我应该得到“两个” StackLevelThreeItem - >我应该得到“三”
......等等......
有人可以帮忙吗?
谢谢
答案 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;
}