C# 带前缀和值

C# 带前缀和值,c#,C#,如果我有字符串“freq1”或“freq12”等等,我怎样才能去掉freq和数字本身呢?试试这样的方法: String oldString = "freq1"; String newString = oldString.Replace("freq", String.Empty); 试着这样做: String oldString = "freq1"; String newString = oldString.Replace("freq", String.Empty); 如果您知道“freq”一

如果我有字符串“freq1”或“freq12”等等,我怎样才能去掉freq和数字本身呢?

试试这样的方法:

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

试着这样做:

String oldString = "freq1";
String newString = oldString.Replace("freq", String.Empty);
如果您知道“freq”一词将一直存在,那么您可以执行以下操作:

string number = "freq1".Replace("freq","");
这将导致“1”。

如果您知道“freq”一词始终存在,那么您可以执行以下操作:

string number = "freq1".Replace("freq","");
这将导致“1”

如果“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);
如果“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);

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

var str = "freq12";
var num = int.Parse(str.Substring(4));
编辑:如果字符串的第一部分不总是“freq”,这里有一个更通用的方法

var str=“freq12”;
整数分裂指数;
对于(splitIndex=0;splitIndex

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

是否总是将文本频率作为字符串中数字的前缀?如果是这样,您的解决方案非常简单:

var str = "freq12";
var num = int.Parse(str.Substring(4));
编辑:如果字符串的第一部分不总是“freq”,这里有一个更通用的方法

var str=“freq12”;
整数分裂指数;
对于(splitIndex=0;splitIndex


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

>字符串中数字的前缀是否总是文本频率?是的,除非我弄错了,否则你似乎有你的答案。(Can Berk Güder也提出了同样的解决方案):)你把赌注押在一个固定的字符串长度上,但我尝试过这样做:如果(!string.IsNullOrEmpty(selection))selectionType=selection.Substring(0);如果(string.IsNullOrEmpty(selection))int-selectedValue=int.Parse(selection.Substring(1));选择的值是“f3”。这不起作用,如果(!string.IsNullOrEmpty(selection))selectionType=selection.Substring(0),我将得到无效的嵌入式语句解析;如果(string.IsNullOrEmpty(selection))int-selectedValue=int.Parse(selection.Substring(0));>>字符串中数字的前面总是文本freq吗?是的,除非我弄错了,否则你似乎有你的答案。(Can Berk Güder也提出了同样的解决方案):)你把赌注押在一个固定的字符串长度上,但我尝试过这样做:如果(!string.IsNullOrEmpty(selection))selectionType=selection.Substring(0);如果(string.IsNullOrEmpty(selection))int-selectedValue=int.Parse(selection.Substring(1));选择的值是“f3”。这不起作用,如果(!string.IsNullOrEmpty(selection))selectionType=selection.Substring(0),我将得到无效的嵌入式语句解析;如果(string.IsNullOrEmpty(selection))int-selectedValue=int.Parse(selection.Substring(0));数字的长度是不同的,所以不要认为你的会起作用,因为你在这里赌的是一个固定的长度。(4)他的两个解决方案都不希望数字部分的长度是固定的。第一个只需要在数字前加上4个字符的前缀。第二种方法只需要在一些数字之前加上一些字母。是的,编辑中添加的正则表达式解决方案一般适用于任何长度的文本/数字部分。请参阅我的非正则表达式方法的解决方案。您的正则表达式可能会被替换为:[^\d]+(\d+)@Svish:您是对的,这是我想到的第一个正则表达式,但后来我想OP可能不需要空格,并更改了我的正则表达式。数字的长度不同,所以不要认为您的正则表达式有效,因为您在这里下注的是固定长度(4)他的两种解决方案都不希望数字部分的长度是固定的。第一个只需要在数字前加上4个字符的前缀。第二种方法只需要在一些数字之前加上一些字母。是的,编辑中添加的正则表达式解决方案一般适用于任何长度的文本/数字部分。请参阅我的非正则表达式方法的解决方案。您的正则表达式可能会被替换为:[^\d]+(\d+)@Svish:您是对的,这是我想到的第一个正则表达式,但后来我认为OP可能不需要空格,并更改了我的正则表达式。