簡體   English   中英

從字符串中刪除子字符串,拆分結果並將其存儲在數組中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM