将字符串转换为两个整数
本文关键字:两个 整数 字符串 转换 | 更新日期: 2023-09-27 18:31:34
我有一个以下形式的字符串:
"(number) number"
因此,例如,它可能包含:
5 (5)
或
5 (3)
我希望创建一个 int 变量,它将保存第一个值(在两种情况下为 5),以及第二个 int 变量,它将在括号中保存值(第一种情况下为 5,第二种情况下为 3)。
解析此字符串并根据需要将信息保存在变量中的最佳方法是什么?
my $str = "(5) 3";
my ($x, $y) = $str =~ /'d+/g;
print "$x't$y'n";
测试链接:http://ideone.com/PzidT
如果您不确定输入是否正好有两个数字,则更安全的代码是:
my $str = "(5) 3 4 (8)";
my ($x, $y) = ($str =~ /'d+/g)[0..1];
print "$x't$y'n";
测试链接:http://ideone.com/dBIjh
有趣的方式 ;-)
var s = "5 (3)";
var space = s.IndexOf(' ');
var openParen = s.IndexOf('(')+1;
var closeParen = s.IndexOf(')');
int firstNumber = int.Parse(s.Substring(0, space));
int secondNumber = int.Parse(s.Substring(openParen, closeParen-openParen));
或者正则表达式方式:
var s = "5 (3)";
var match = Regex.Match(s, @"('d+( '(('d+)')");
int firstNumber = int.Parse(match.Groups[1].Value);
int secondNumber = int.Parse(match.Groups[2].Value);
使用正则表达式:
string input = "5 (3)";
string pattern = @"('d+) '(('d+)')";
var match = Regex.Match(input, pattern);
if (match.Success)
{
int x = int.Parse(match.Groups[1].Value);
int y = int.Parse(match.Groups[2].Value);
...
}
else
{
// Fail
...
}
对于第三个选项:
看看 String.Split 方法和 Int32.Parse 方法。
这是我的头顶,所以可能需要一些更正。您可以将字符串拆分到所有不需要的字符上,并让它删除任何空值。
string[] values = stringValues.Split(new char[] {' ','(',')'}, StringSplitOptions.RemoveEmptyEntries);
foreach (string stringValue in values)
{
int intValue = Convert.ToInt32(stringValue);
// etc.
}
使用一些正则表达式! 'd
指定数值,( )
指定返回值。
var regex = new Regex("('d+) '(('d+)')");
var match = regex.Match(yourStringVariable);
所以对于yourStringVariable = "5 (3)"
,输出将是:
Console.WriteLine(match.Groups[1].Value); // Prints 5
Console.WriteLine(match.Groups[2].Value); // Prints 3