私は次の形式の文字列を持っている:文字列を2つのintに変換しますか?
"(number) number"
だから、例えば、それは含まれていてもよい:
5 (5)
または
5 (3)
を私は保持するint型の変数を作成したいです最初の値(どちらの場合も5)、および大括弧内の値を保持する2番目のint変数(最初のケースでは5、2番目では3)。
私はこの文字列を解析して、情報を変数に保存するのに最適な方法は何ですか?
私は次の形式の文字列を持っている:文字列を2つのintに変換しますか?
"(number) number"
だから、例えば、それは含まれていてもよい:
5 (5)
または
5 (3)
を私は保持するint型の変数を作成したいです最初の値(どちらの場合も5)、および大括弧内の値を保持する2番目のint変数(最初のケースでは5、2番目では3)。
私はこの文字列を解析して、情報を変数に保存するのに最適な方法は何ですか?
my $str = "(5) 3";
my ($x, $y) = $str =~ /\d+/g;
print "$x\t$y\n";
テストリンク:http://ideone.com/PzidT
あなたの場合入力にちょうど2つの数字があることが確かではなく、その後、より安全なコードは次のとおりです。
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));
または正規表現の方法:第三の選択肢については
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
...
}
入力文字列のフォーマットに不確実性がある場合を除き、Regexは少し過剰なようです。 – mgnoonan
をご覧ください3210およびInt32.Parse Methodである。
:
テイク正規表現を使用して
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[] values = stringValues.Split(new char[] {' ','(',')'}, StringSplitOptions.RemoveEmptyEntries);
foreach (string stringValue in values)
{
int intValue = Convert.ToInt32(stringValue);
// etc.
}
RegEx! \d
は数値を指定し、()
指定し、値を返さ.. yourStringVariable = "5 (3)"
ためので
var regex = new Regex("(\d+) \((\d+)\)");
var match = regex.Match(yourStringVariable);
、出力は次のようになります。
Console.WriteLine(match.Groups[1].Value); // Prints 5
Console.WriteLine(match.Groups[2].Value); // Prints 3
正規表現。 – Neil
「番号(数字)」を意味しましたか? –
2つの例は、あなたが提示したパターンとは異なります(括弧内の値は右側にあります) – GolfWolf