我有一些像-r
这样的字符串。现在我希望从中获取数字name (1)
并将数字存储到1
变量中。
我不知道如何使用int
。
是否可以使用regex
功能来创建它?
答案 0 :(得分:2)
是的,您可以像这样使用Split
:
string str = "name (1)";
int result = int.Parse((str.Split(' ')[1])[1].ToString());//Output is 1
编辑:对于包含多个字符的数字,您可以使用TakeWhile
,如下所示:
string str = "name (125)";
int res = int.Parse(new string(str.Split(' ')[1].Skip(1).TakeWhile(char.IsDigit).ToArray()));//Output is 125
请不要忘记将此using System.Linq;
添加到您的using指令。
答案 1 :(得分:0)
using System.Text.RegularExpressions;
你可以这样做:
var s = "name (1)";
Match m = Regex.Match(s, @"\d+");
if(m.Success)
{
int number = int.Parse(m.Value);
}
\d
代表任何数字形式0 - 9. +
至少匹配一个并且尽可能多。
答案 2 :(得分:0)
using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
string str = "name (12345)";
MatchCollection mc = Regex.Matches(str, "[0-9]+");
int a = int.Parse(mc[0].ToString());
Console.WriteLine(a);
}
}
答案 3 :(得分:0)
如果您不想学习正则表达式,可以在一行中使用String.SubString
,如下所示:
int value = Convert.ToInt32(mystr.SubString(mystr.IndexOf("(") + 1, mystr.IndexOf(")")));
但是,只有当您使用的字符串始终采用“name(1)”
格式时答案 4 :(得分:-1)
在javascript中:
if (/.*\((\d+)\)/.test(input)) {
value = parseInt(RegExp.$1, 10);
}
在其他语言中,您可以做类似的事情。 javascript最容易获得一个控制台,你没有指定。
。*意味着什么...... (意思是文字( \ d表示数字,周围(\ d +)表示组1或更多数字 然后结束)是文字)
答案 5 :(得分:-1)
OP标题更改的编辑帖子,您可以为C#
执行类似的操作 int numVal = Int32.Parse("-105");
Console.WriteLine(numVal);
这将打印出-105