在字符列表后删除字符串中的元素 - 不使用foreach循环

时间:2014-07-22 10:36:55

标签: c# asp.net string

我有一个字符串可能包含一些禁用的字符,比如说:

char[] BAD_CHARS = new char[] { '-', '.' };

我希望像“Foo 106.4”这样的字符串表示为“Foo 106”

fooString= fooString.Substring(0, fooString.LastIndexOf('-'));

这将是解决方案......但我正在寻找更有活力的东西。

如何在不执行foreach循环的情况下将上述逻辑应用于BAD_CHARS?

2 个答案:

答案 0 :(得分:3)

你可以用string.Split();

这样做
string foostring = "foo 204.5-4";
string[] splitted = foostring.Split(BAD_CHARS);
string result = splitted[0];

或者

string foostring = "foo 204.5-4";
string result = foostring.Split(BAD_CHARS)[0];

您可以尝试here

答案 1 :(得分:3)

你非常接近。假设你想停在第一个(不是最后)坏字符,

fooString = fooString.Substring(0, fooString.IndexOfAny(BAD_CHARS));

这样做的好处是不必处理(并分成子串)整个输入