剥离前缀和值

时间:2009-03-25 13:25:39

标签: c#

如果我有字符串“freq1”或“freq12”等等,我怎样才能除去freq以及数字呢?

4 个答案:

答案 0 :(得分:3)

string foo     = "freq12";
string fooPart = foo.Substring(4);   // "12"
int fooNumber  = int.parse(fooPart); // 12

如果“freq”部分不是常数,那么你可以使用正则表达式:

using System.Text.RegularExpressions;

string pattern = @"([A-Za-z]+)(\d+)";
string foo = "freq12";

Match match = Regex.Match(foo, pattern);

string fooPart = match.Groups[1].Value;
int fooNumber  = int.Parse(match.Groups[2].Value);

答案 1 :(得分:2)

是否总是将文本 freq 添加到字符串中的数字前面?如果是这样,您的解决方案非常简单:

var str = "freq12";
var num = int.Parse(str.Substring(4));

编辑:如果字符串的第一部分并非总是“freq”,这是一种更通用的方法。

var str = "freq12";
int splitIndex;

for(splitIndex = 0; splitIndex < str.Length; splitIndex++)
{
    if (char.IsNumeric(str[splitIndex]))
        break;
}

if (splitIndex == str.Length)
    throw new InvalidOperationException("The input string does not contain a numeric part.");

var textPart = int.Parse(str.Substring(0, splitIndex));
var numPart = int.Parse(str.Substring(splitIndex));

在给定示例中,textPart应评估为 freq numPart评估为 12 。如果这仍然不是你想要的,请告诉我。

答案 2 :(得分:0)

尝试这样的事情:

String oldString = "freq1";
String newString = oldString.Replace("freq", String.Empty);

答案 3 :(得分:0)

如果您知道“freq”这个词总是在那里,那么您可以执行以下操作:

string number = "freq1".Replace("freq","");

这将导致“1”。