我有一个字符串,然后是=,然后是一个数字。
e.g
“刷新率= 75”
我想在结尾处获取整数并将其存储在Int中。程序使用这个存储在ini文件中的值,我需要隔离这个值,因为其他一些值计算是基于它的。
如何做到这一点?
提前谢谢
Ooooopsss:
对不起,伙计们,我犯了一个大错。
该字符串实际上采用“RefreshRate = numHz”格式...即“RefreshRate = 65Hz”...我确定这会起作用,但是我得到“错误的输入格式错误,因为它也添加了Hz,并且这是抛出异常:s
答案 0 :(得分:8)
It’s easy! Just use a regular expression!
var m = Regex.Match(input, @"=\s*(-?\d+)");
if (!m.Success)
throw new InvalidOperationException(
"The input string does not contain a number.");
return Convert.ToInt32(m.Groups[1].Value);
这将提取任何字符串中=
之后的第一个整数。因此,如果您的输入字符串为"Frequency2=47Hz"
,则会返回47
。
答案 1 :(得分:6)
int i=Convert.ToInt32(st.Substring(st.IndexOf('=')+1))
答案 2 :(得分:5)
如果您确定格式为 word = value 并且不是变体,那么这应该适合您。
int value = int.Parse(line.Split('=').Last());
修改:处理伤害赫兹问题
int value = int.Parse(line.Split('=').Last().Replace("Hz", ""));
答案 3 :(得分:4)
怎么样:
static int GetIntAfterEqual(string containsIntAfterEqual)
{
if(containsIntAfterEqual==null)
throw new ArgumentNullException("containsIntAfterEqual");
string[] splits = containsIntAfterEqual.Split('=');
if (splits.Length == 2)
return int.Parse(splits[1]);
else
throw new FormatException(containsIntAfterEqual);
}
<强>更新强> 你说它可能是“entryname = 25hz”。这适用于两种情况:
static int GetIntAfterEqual(string containsIntAfterEqual)
{
if(containsIntAfterEqual==null)
throw new ArgumentNullException();
Match match = Regex.Match(containsIntAfterEqual, @"[\d\w]+=([\d]+)\w*");
if(match.Success)
return int.Parse(match.Groups[1].Value);
else
throw new FormatException(containsIntAfterEqual);
}
答案 4 :(得分:2)
一种方法是使用string.Split:
int.Parse(s.Split("=")[1])
答案 5 :(得分:2)
如果您在单词中确认了您的文字格式,那么您可以使用此
var word="RefreshRate = 756numHZ";
int n;
int.TryParse(word.tolower().Replace("refreshrate","").Replace("=", "").Replace("numhz", "").Trim(), out n);
这也将处理文本中的空格大小。
答案 6 :(得分:1)
var line = "RefreshRate=75";
int number = int.Parse(line.Split('=')[1]);
答案 7 :(得分:0)
假设yourString
包含文字RefreshRate=75
,您可以沿着这些方向做某事。
int.Parse(yourString.Substring(yourString.IndexOf("=")+1));
答案 8 :(得分:0)
如果您不想处理或检查“RefreshRate =”或“RefreshRate ==”或“RefreshRate = Foobar”,您可以执行以下操作
public static class IntParseExtension
{
public static bool TryParseInt(this string s, out int i)
{
i = 0;
bool retVal = false;
int index;
string sNumber;
index = s.IndexOf("=");
if (index > -1)
{
sNumber = s.Substring(index + 1);
if (sNumber.Length > 0)
retVal = int.TryParse(sNumber, out i);
}
return retVal;
}
}
答案 9 :(得分:-3)
class Program
{
static void Main(string[] args)
{
int j = 0 ;
bool flag = false;
string s = "myage = 400";
char[]c = s.ToCharArray();
for (int i = 0; i <= s.Length -1; i++)
{
if ((c[i] > '0') && (c[i] < '9'))
{
flag = true;
}
if (flag)
{
c[j++] = c[i];
}
}
//for (; j < s.Length - 1; j++)
//{
c[j] = '\0';
s = new string(c,0,j);
int num = int.Parse(s);
Console.WriteLine("{0}",num);
Console.ReadKey();
}
我不知道是否有更好的解决方案......这个工作