2013-06-05 120 views
1

如何拆分文本文件,其中包含各種長度的句子,並且當我單擊我的表單上的button1時需要讀取文本文件,然後從文本文件中提取單詞在'字符的開頭和結尾之間,其中包含@符號或#符號,在'字符的開始和結尾處,我想知道它是哪一行並將這些字輸出到文本文件中。在文本文件中拆分文本

例子,可以說我有這樣一個文本

abc'123'@def'456''@ghi' 
abc'123'@def'#456''@ghi'123456' 

輸出:

1st sentence @ghi 
2nd sentence #456 @ghi 

PS@def是不是在開始和'結束字符因此不會在輸出

我與分裂功能捆綁,但無法使它成爲質量:(我怎樣才能做到這一點,我將p如果有人知道有幫助,請出租。

謝謝。

+1

什麼是第一句 –

+0

不看很難。你有什麼嘗試? –

+0

'我與分裂功能綁在一起,但無法使它成爲質量' - 發佈你的代碼。 – 2013-06-05 04:51:47

回答

0

這裏烏爾輸入字符串爲s &字符串包含@#在第一索引是str

int start = s.indexOf("'"); 
    int end = s.indexOf("'", start + 1); 

    string str = s.SubString(start, end); 

    if(str.ToCharArray()[0] == "@" || str.ToCharArray()[0] == "#") 
     // proceed 
+0

我不能讓它運行的問題,我認爲它不會按預期工作。如果(str.ToCharArray()[0] ==「@」|| str.ToCharArray()[0] ==「#」)將s.indexOf更正爲s.IndexOf有點錯誤, –

0

至於這個例子在這裏而言是一個示例代碼,作品

 string sen1="abc'123'@def'456''@ghi'"; 
     string sen2 = "abc'123'@def'#456''@ghi'123456'"; 

     string[] NewSen = Regex.Split(sen1, "''"); 

     string YourFirstOP=NewSen[1].ToString(); //gets @ghi 


     NewSen = Regex.Split(sen2, "''"); 

     string[] A1 = Regex.Split(NewSen[0], "'"); 
     string[] A2 = Regex.Split(NewSen[1], "'"); 


     string YourSecondOP= A1[A1.Length - 1] + "" + A2[A2.Length - 3].ToString();// gets #456 @ghi 

但多數民衆贊成只是這個例子

希望這可以幫助

+0

你的解決方案不是通用的,將不能使用各種長度的字符串。但感謝您的努力。其實我感謝所有迴應的人。 –

0
string [] Mass = s.Split('\''); 
if (Mass.Length > 1) 
    for (int i = 1; i < (Mass.Length - 1); i += 2) 
    { 
      if (Mass[i].Contains("@") || Mass[i].Contains("#")) 
      // proceed 
    } 
+0

這將發現匹配的文字像'@ 123'def'也 – Damith

+0

@達姆斯你錯了它的作品,但不使用if(Mass [i] .StartsWith(「@」)|| Mass [i] .StartsWith(「如果我們使用if(Mass [i] .Contains(「@」)|| Mass [i] .Contains(「#」)),它會工作得很完美,因爲它會返回包含單詞之間的#和@字符'角色的開始和結束。否則它只會返回#和@字符的開始字。 –

+0

@GBmen在我上面提到的問題旁邊,它工作正確。註釋掉你寫的if語句,並添加if(Mass [i] .Contains(「@」)|| Mass [i] .Contains(「#」))的新行,我會接受你的回答。謝謝。 –

0

試試這個,

string testString = @"abc'123'@def'456''@ghi'abc'123'@def'#456''@ghi'123456'"; 
List<string> output = new List<string>(); 
int startIndex = 0; 
int endIndex = 0; 

while (startIndex >= 0 && endIndex >= 0) 
{ 
    startIndex = testString.IndexOf("'", endIndex + 1); 
    endIndex = testString.IndexOf("'", startIndex + 1); 
    if (startIndex >= 0 && endIndex >= 0) 
    { 
     string str = testString.Substring(startIndex + 1, (endIndex - startIndex) - 1);      
     int indexOfSpecialChar = str.IndexOf("@"); 
     if (indexOfSpecialChar < 0) 
     { 
      indexOfSpecialChar = str.IndexOf("#"); 
     } 

     if (indexOfSpecialChar >= 0) 
     { 
      output.Add(str.Substring(indexOfSpecialChar)); 
     } 
    } 
}