[英]Remove substring from a string, split the result and store it in an array
我的代碼是:
public void processData(string data)
{
string com = data.Split(' ')[0];
string[] val = data.Remove(0,com.Length).Split(' ');
}
我想使用此代碼實現的是,當com
存儲data
變量中的第一個單詞時, val
數組應存儲data
變量的其余單詞。 在第4行代碼中,我首先從0索引中刪除了字符到第一個單詞的長度,從而實現了這一點。 這將刪除第一個單詞,然后根據空格將其拆分,然后將結果存儲在數組中。 問題是這種情況沒有發生。 com
存儲第一個單詞,但val
始終顯示為空。 請有人告訴我該怎么辦? 我可以使用foreach
循環或其他技術來實現。 但是由於性能問題,我不需要太多代碼。
我的示例字符串如下所示:
begin main
timesteps 1750
weeks 250
campaigns 6
scenario 10
epsilon 0.01
powerplant1 11
powerplant2 10
constraint13 46
constraint14 7
constraint15 0
constraint16 1
constraint17 3
constraint18 0
constraint19 1
constraint20 1
constraint21 1
durations 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24
左邊有字段,右邊有值。 我想分開存放它們。
示例:字段是timesteps
,值是1750
解:
這是一個非常愚蠢的解決方案,但我只是重新啟動了Visual Studio,但效果很好。
謝謝大家的好評。 我為所有答案+1,並標記了Blachshma答案,因為重新啟動或重新創建項目的建議來自他。
使用LINQ的Skip()
string[] val = data.Split(' ').Skip(1).ToArray();
要強調示例中的字符串:
string data = "timesteps 1750";
string com = data.Split(' ')[0]; // Returns timesteps
string[] val = data.Split(' ').Skip(1).ToArray(); // Returns 1750
您的另一個示例:
string data = "durations 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24";
com
將具有“ durations”,而val
將具有由16個元素組成的數組,每個元素的值為“ 24”
string[] val = data.Remove(0, data.IndexOf(' ') + 1).Split(' ');
我假設它的val
不會顯示為null
但第一個單詞為空,因為您已從字符串中刪除了第一個單詞的子字符串,但尚未刪除分隔符(空格)。
所以這應該工作(如果您只想刪除第一個單詞):
string[] val = data.Split().Skip(1).ToArray();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.