2016-11-10 14 views
0

我有一個問題。我在一個控制檯應用程序上工作,我想在同一行上讀取3變量。在同一行上讀取3個變量C#

隨着C語言當我開始我寫的程序,我們可以寫出此

int a; 
string b; 
int c; 

scanf("%d %s %d", &a, &b, &c); 

:1 + 1在同一行且a = 1 B = 「+」 C = 1

我如何使用console.readline()在C#中做到這一點?

謝謝你在前進,

尼科

+0

在c#中沒有這種可能性。但你可以找到自定義的實現,菲:http://www.blackbeltcoder.com/Articles/strings/a-sscanf-replacement-for-net – pwas

+3

[閱讀兩個整數在一行使用C#](http:// stackoverflow。 com/questions/3881826/reading-two-in-one-line-using-c-sharp)看看這個問題,它應該是你正在尋找的東西 –

回答

0

這個答案是從reading two integers in one line using C#修改。所以,你可以做到這幾種方式在這個答案說明,但我建議,如:

//Read line, and split it by whitespace into an array of strings 
string[] scanf= Console.ReadLine().Split(); 

//Parse element 0 
int a = int.Parse(scanf[0]); 

//Parse element 1 
string b = scanf[1]; 

//Parse element 2 
int c = int.Parse(scanf[2]); 

我建議,因爲所描述的更多的方式鏈接如下。

0

沒有,沒有等價的,但你可以很容易地創建一個:

void Scanf(out string[] values) 
{ 
    values = Console.ReadLine().Split(); 
} 

但是你必須分析每一個參數在調用代碼:

int a; 
string b; 
int c; 
string[] r; 

scanf(out r); 
int.TryParse(r[0], out a); 
b = r[1]; 
int.TryParse(r[2], out c); 

如果你想驗證字符串和數字的格式也可能需要一個正則表達式:

var r = new Regex("(\\d+) (\\S+) (\\d+)"); 
var values = r.Matches(Console.ReadLine())[0]; 

現在你又一次需要解析:

int.TryParse(values.Groups[1], out a); 
b = values.Groups[2]; 
int.TryParse(values.Groups[3], out c); 

記住,正則表達式中的第一組八方通包含了完整的匹配字符串,所以第一個捕獲組具有指數之一。