Ent*_*ity 35 c# string textbox
我有一个字符串数组:
string[] remove = { "a", "am", "p", "pm" };
Run Code Online (Sandbox Code Playgroud)
我有一个用户输入文本的文本框.如果他们remove
在文本框中文本末尾的数组中键入任何字符串,则应将其删除.最简单的方法是什么?
编辑为了澄清,我正在制作时间解析器.当你给函数一个字符串时,它会尽力将它解析为这种格式:08:14pm
我有一个文本框来测试它.当焦点离开文本框时,我需要获取没有am/pm/a/p后缀的文本,因此我可以解析仅数字段.
Bro*_*ass 70
string[] remove = { "a", "am", "p", "pm" };
string inputText = "blalahpm";
foreach (string item in remove)
if (inputText.EndsWith(item))
{
inputText = inputText.Substring(0, inputText.LastIndexOf(item));
break; //only allow one match at most
}
Run Code Online (Sandbox Code Playgroud)
Luk*_*keH 18
foreach (string suffix in remove)
{
if (yourString.EndsWith(suffix))
{
yourString = yourString.Remove(yourString.Length - suffix.Length);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为BrokenGlass的解决方案很好,但我个人更愿意创建三个独立的方法,允许用户只修剪开始,结束或两者.
如果这些烦恼会被大量使用,我会在辅助类和/或扩展方法中创建它们; http://msdn.microsoft.com/en-gb/library/vstudio/bb383977.aspx
public string TrimStart(string inputText, string value, StringComparison comparisonType = StringComparison.CurrentCultureIgnoreCase)
{
if (!string.IsNullOrEmpty(value))
{
while (!string.IsNullOrEmpty(inputText) && inputText.StartsWith(value, comparisonType))
{
inputText = inputText.Substring(value.Length - 1);
}
}
return inputText;
}
public string TrimEnd(string inputText, string value, StringComparison comparisonType = StringComparison.CurrentCultureIgnoreCase)
{
if (!string.IsNullOrEmpty(value))
{
while (!string.IsNullOrEmpty(inputText) && inputText.EndsWith(value, comparisonType))
{
inputText = inputText.Substring(0, (inputText.Length - value.Length));
}
}
return inputText;
}
public string Trim(string inputText, string value, StringComparison comparisonType = StringComparison.CurrentCultureIgnoreCase)
{
return TrimStart(TrimEnd(inputText, value, comparisonType), value, comparisonType);
}
Run Code Online (Sandbox Code Playgroud)
使用这些方法,我们可以修改代码以循环包含要修剪的字符串的数组.
var content = "08:00 AM";
var removeList = new [] { "a", "am", "p", "pm" };
for (var i = 0; i < removeList.length; i++)
{
content = TrimEnd(content, removeList[i]);
}
Run Code Online (Sandbox Code Playgroud)
注意:此代码可以进一步优化,但可以以良好的速度工作.