鉴于以下情况,我想知道是否可以使用我还不太熟悉的正则表达式编写更好的解决方案。我在我的基本 c# 字符串操作中看到了漏洞,尽管它有些工作。非常感谢您的想法和想法。
非常感谢,
克雷格
给定下面的字符串“story”,编写一个脚本来执行以下操作:
- 变量文本用 . 括起来
{ }
。 - 如果变量文本为空白,请删除包含在 中的任何其他文本
[ ]
。 - 要删除的文本可以用
[ ]
.
格式:
XYZ Company [- Phone: [({404}) ]{321-4321} [Ext: {6789}]]
例子:
填写了所有可变文本。
XYZ Company - Phone: (404) 321-4321 Ext: 6789
未输入分机,删除“分机:”。
XYZ Company - Phone: (404) 321-4321
没有分机也没有输入区号,去掉“分机:”和“( )”。
XYZ Company - Phone: 321-4321
没有分机号,没有电话号码,也没有区号,删除“分机:”和“()”和“-电话:”。
XYZ Company
这是我使用纯字符串操作的解决方案。
private string StoryManipulation(string theStory)
{
// Loop through story while there are still curly brackets
while (theStory.IndexOf("{") > 0)
{
// Extract the first curly text area
string lcCurlyText = StringUtils.ExtractString(theStory, "{", "}");
// Look for surrounding brackets and blank all text between
if (String.IsNullOrWhiteSpace(lcCurlyText))
{
for (int lnCounter = theStory.IndexOf("{"); lnCounter >= 0; lnCounter--)
{
if (theStory.Substring(lnCounter - 1, 1) == "[")
{
string lcSquareText = StringUtils.ExtractString(theStory.Substring(lnCounter - 1), "[", "]");
theStory = StringUtils.ReplaceString(theStory, ("[" + lcSquareText + "]"), "", false);
break;
}
}
}
else
{
// Replace current curly brackets surrounding the text
theStory = StringUtils.ReplaceString(theStory, ("{" + lcCurlyText + "}"), lcCurlyText, false);
}
}
// Replace all brackets with blank (-1 all instances)
theStory = StringUtils.ReplaceStringInstance(theStory, "[", "", -1, false);
theStory = StringUtils.ReplaceStringInstance(theStory, "]", "", -1, false);
return theStory.Trim();
}