2016-07-20 65 views
0

問題更新:澄清,抱歉,如果我的問題不明確。我如何在c中做到這一點#

我們走吧。什麼即時試圖做的,是在這個例子中,我需要與屬性斜體變化加重名i tag名, 和對textbreak基於其屬性更改標記名稱的spefic標籤,並刪除屬性

=」不」 p tag

這是我如何填充我的ListView

//add data to listview 
       this.lvContent.Items.Add(new MyItem { Tag = "Emphasis", Attribute = "Type", Value = "Italic", NewTag = "i" }); 
       this.lvContent.Items.Add(new MyItem { Tag = "Para", Attribute = "TextBreak", Value = "No", NewTag = "p" }); 


      foreach (MyItem item in lvContent.Items) 
      { 

       XElement rootI = XElement.Parse(txtInput.Text); 
       IEnumerable<XElement> Emphasis = 
        from el in rootI.Descendants("" + item.Tag + "") 
        where (string)el.Attribute("" + item.Attribute + "") == "" + item.Value + "" 
        select el; 

       foreach (XElement el in Emphasis) 
       { 
        el.Name = "" + item.NewTag + ""; 
       } 

       XElement xdoc = XElement.Parse(rootI.ToString()); 
       var elementsToRemove = from elemet in xdoc.Descendants(item.NewTag) 
             where elemet.Attribute(item.Attribute).Value == item.Value 
             select elemet; 
       foreach (var ee in elementsToRemove) 
       { 
        if (ee.Attribute(item.Attribute).Value == item.Value) 
        { 
         ee.RemoveAttributes(); 
        } 
       } 
       Console.WriteLine(xdoc.ToString()); 
} 

程序

<Abstract> 
    <Heading>Abstract</Heading> 
    <Para TextBreak="No">Some paragraph <i>q</i></Para> 
</Abstract> 
<Abstract> 
    <Heading>Abstract</Heading> 
    <p>Some paragraph <Emphasis Type="Italic">q</Emphasis></p> 
</Abstract> 
的輸出

,這是正確的輸出

<Abstract> 
    <Heading>Abstract</Heading> 
    <p>Some paragraph <i>q</i></p> 
</Abstract> 

的原因IM問第一個循環到下一個循環來pass the output是如何

被用作INPUT下一個循環是因爲輸出的。

我希望我的問題現在已經清楚。

+0

你的意思是*數據是第一個循環的輸出嗎?每次迭代究竟想做什麼?至少寫出預期的輸出。 – user3185569

+0

你想達到什麼目的? –

+0

真的不清楚你的具體問題是什麼。從文本框讀取數據?寫入文本框? – Filburt

回答

0

如果我明白你的問題的權利,使上述循環的新變量,然後將其保存到它在循環這樣的結尾:

string input = "some text"; 
string[] pets = { "dog", "cat", "bird" }; 
string manipulateddata; 

foreach (string value in pets) 
{ 
    manipulateddata = ;//whatever your loop should do (you can use manipulated data here to manipulate) 
} 
Console.Writeline(manipulateddata); 
+0

我已經更新了問題,我面臨的問題。我希望這個問題是清楚的,現在 – askquestionzero

2
string input = "some text"; 
string[] pets = { "dog", "cat", "bird" }; 
input += " "; 

foreach (string value in pets) 
{ 
    input += " " + value; 
} 

Console.WriteLine(input); 

或者更簡單的單行精確情況可能是:

Console.WriteLine(input + " " + String.Join(" ", pets)); 
+0

那麼,恭喜了追加我的回答對這個帖子,反正有很多的第一個選項'+ ='相比,第二時將不會是一個很好的解決方案。 –

+0

,正如另外對於這樣的回答:我建議使用[StringBuilder的](https://www.google.de/search?q=C%23+stringbuilder&gws_rd=cr&ei=ABSPV4LoB4regAbDxomYBA)字符串處理。 – ckruczek

+0

我已經更新了我面臨的問題。我希望這個問題現在很清楚 – askquestionzero

0

您可以使用String.Join做到不循環:

Console.WriteLine("{0} : {1}",input ,String.Join(" ",pets)); 

Here is working Example

下面的代碼將幫助你糾正你的錯誤,我不會建議你遵循+=,而不是爲使用StringBuilder這樣的:

string input = "some text"; 
    string[] pets = { "dog", "cat", "bird" }; 
    StringBuilder outputBuilder= new StringBuilder(input); 
    foreach(string pet in pets) 
    { 
     outputBuilder.Append(" "); 
     outputBuilder.Append(pet); 
    } 
    Console.WriteLine("{0}",outputBuilder.ToString()); 

Example with StringBuilder

+0

我已經更新了我面臨的問題。我希望現在這個問題很清楚 – askquestionzero

0

你可以簡單地使用String.Join來實現您的預​​期輸出。喜歡..

Console.WriteLine(input + String.Join(" ", pets)); 

希望這有助於!