2014-02-26 60 views
1

我試圖採取一個由空格分隔的數字字符串,並將它變成一個列表。用戶通過輸入數字輸入數字串,然後根據需要輸入空格。這進入「myString」。我想取這個字符串,只取這些數字,然後將它添加到myList中。我想創建的代碼是這樣的:如何分析字符串

for(int i = 0; i < myString.Length; i++) 
    { 
     //If its not a space, add it to the list 
     if (myString[i] != " ") 
     { 
      myList.Add(prices[i]); 
     } 
    } 

錯誤但是說你不能使用運營商的類型字符和字符串「=!」。有道理,但我很難找到替代方案。是否有更有效的方法將一串:「1 2 3 4 5」變成列表?

這是針對谷歌代碼的挑戰,因爲我只是練習老問題。鏈接可以在這裏找到: https://code.google.com/codejam/contest/351101/dashboard#s=p0

謝謝你所有的幫助傢伙!我如何有用的,這樣是高中程序員喜歡我,誰還真不知道自己在做什麼:-)

+7

'」「'是一個字符串。 ''''是一個字符 – devshorts

+0

哦,哇,謝謝!有時候我很驚訝我的愚蠢。謝謝! –

+0

如果您只是想將數字添加到列表中並忽略空格,那麼您應該查看[MSDN上的String.Split](http://msdn.microsoft.com/zh-cn/library/system.string.split% 28v = vs.110%29.aspx) –

回答

7

使用Split方法來代替

var numbers = myString.Split().Select(x => int.Parse(x)).ToArray(); 

順便說一句,爲了表示一個char恆定單引號C#被使用。因此,作爲已經在評論中提到的," "string文字包含空間不是char。你應該使用' '

+0

所以如果我理解你是對的,你認爲在這種情況下數組比使用列表更容易使用嗎?我需要對每個人的利弊進行一些研究。 –

+0

@TylerJones如果你不想添加新的項目,那麼你可以使用Array,否則你可以使用'List ',順便說一句,你可以使用所有的LINQ方法和Array,沒有區別。如果你有太多的數字搜索,然後你可以考慮使用HashSet 代替,更好和更快的查找 –

+0

好吧,聽起來像一個數組將是該項目的最佳使用。謝謝@ Selman22。 –

3

兩件事總是很驚訝:

首先,要改正錯誤更改訂單于:

if (myString[i] != ' ') // change to single quotes. 

其次,還有一個更簡單的方法:

string.Split(new char[] {' '}); // this will return the array you're seeking... 
2

myString[i]char,所以不是" "你應該使用' '單引號。

2

您可以使用String.Split方法在空格上拆分字符串,從而生成一個表示數字的列表。

myList = myString.Split(" "); 
2

你需要在空間上拆分字符串。你可以使用LINQ像:

List<int> list = myString.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) 
         .Select(int.Parse) 
         .ToList(); 

如果你想有一個更安全的選擇和更換任何無效項,-1你可以使用int.TryParse像:

int temp; 
List<int> list = myString.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) 
    .Select(r => { return int.TryParse(r, out temp) ? temp : -1; }) 
    .ToList();