2011-06-01 108 views
0

我試圖使用正則表達式字符串中刪除「。簡單的正則表達式C#,替換和拆分問題

我收到一個串入的方法,我想借此字符串,並把它分解成詞這是在字符串中。

我的代碼如下,希望你能看到我在做什麼。

我有是想告訴正則表達式說:「是我想刪除什麼問題。我嘗試了很多方法:我搜索了Google的答案,不得不求助於此。

search_string看起來像這樣:blah="blah" la="la" ta="ta"並最終我只想要blah blah la la ta ta

public blahblah blahblah(blah blah, string search_string) 
     {     
      Regex r = new Regex(@"/"+"); 

      string s3 = r.Replace(search_string, @" "); 

      Regex r2 = new Regex(" "); 
      Regex r3 = new Regex("="); 

      string[] new_Split = { }; 

      string[] split_String = r2.Split(s3); 


      foreach (string match in split_String) 
      { 
       new_Split = r3.Split(match); 

      } 

      //do blahblah stuff with new_Split[1] .. etc 
      // new_Split[0] should be blah and new_Split[1] should 
      //  be blah with out "", not "blah" 


      return blah_Found; 
+0

不要擔心那麼多返回或類或參數等,它主要是血腥的正則表達式我不能解決我已經嘗試@「\」+「和」\「+」和@「//」+「和@「」+「,大多數都不允許由於c#中的synax,但是上帝大壩正則表達式真的讓我很難。 – scott 2011-06-01 09:19:52

+0

我真的懷疑你需要這個正則表達式。就這樣,我很清楚'blah =「blah」la =「la」ta =「ta」'應該變成'blah la bla ta ta ta' – 2011-06-01 09:22:24

+0

'blah'和'blahblah'是什麼? 'Regex r = new Regex(@「/」+「);'doesen't compile。'blah_Found'何時聲明? – Jodrell 2011-06-01 09:26:27

回答

3

只需使用:

myString = myString.Replace("\"", String.Empty); 

[更新]

中的String.Empty或 「」 不是空格字符。你寫了這個

blah="blah" la="la" ta="ta" 
要轉換到

blah blah la la ta ta 

所以,你有空格反正

。如果你想這樣的:

blahblahlalatata 

你需要太刪除它們:

myString = myString.Replace("\"", String.Empty).Replace(" ", String.Empty); 

爲「=」做一遍,等...

你需要更精確在你的問題。

+0

我什至不需要正則表達式大聲笑,我試過這種方法,我認爲這是我會去的方式,問題是它似乎離開了一個空間,「用於我試圖改變String.Empty到」,它仍然離開一個空間 – scott 2011-06-01 09:41:43

+0

亞似乎離開一個空間:(但考慮到字符串會改變每次(但粗略的格式)這可能是唯一的選擇。 – scott 2011-06-01 09:45:08

+0

@Scott,這使''完好無損,你的問題要求刪除它們,沒有? – Jodrell 2011-06-01 09:47:14

0

作爲一個快的想法 - 也許吠叫完全錯了,但難道不想要像

Regex r = new Regex("(\".*\")"); 

例如,一個reg表達式「*」。

+0

你的隊友多數民衆贊成有點什麼我是一個通配符後分隔符。 – scott 2011-06-01 09:42:02

0

這是一個辦法做到這一點。 它將搜索在任何形式:SomeWord =「somethingelse」
與SomeWord更換somethingelse

var regex = new Regex(@"(\w+)=\""(.+)\"""); 
var result = regex.Replace("bla=\"bla\"", "$1 $2"); 
+0

工作感謝隊友,不幸我傳遞給多個blahblahs ...所以有一次我可能會通過blah =「blah」和其他我可能會通過blah =「blah」meh =「meh」etc =「etc」。 ..等等:( – scott 2011-06-01 09:40:48

+0

啊,我看到了2個正則表達式,並認爲你是第一次分裂,然後一個接一個地清理它們... – 2011-06-01 10:03:14

0

我不能幫你正則表達式。
無論如何,如果你只需要刪除=和「和分裂的話,你可以嘗試:

string[] arr = s 
    .Replace("="," ") 
    .Replace("\""," ") 
    .Split(new string[1] {" "}, StringSplitOptions.RemoveEmptyEntries); 
+0

有趣的馬可現在馬上試試,如果我可以避免正則表達式我會喜歡!通過閱讀,它應該將文字放入一個數組中? 現在嘗試代碼,謝謝。 – scott 2011-06-01 09:46:14

+0

代碼作品隊友,但我將如何調整它不能替換爲空格字符「」,但沒有替換?甚至沒有空間char? – scott 2011-06-01 09:54:51

+0

@scott:use'「」':)但是,如果你用一個空字符串替換,我不知道'Split'函數是否工作... – Marco 2011-06-01 10:18:51

0

我做到了,在2通過

string input = "blah=\"blah\" la=\"la\" ta=\"ta\""; 

//replace " and = with a space 
string output = Regex.Replace(input, "[\"=]", " "); 
//condense the spaces 
output = Regex.Replace(output, @"\s+", " "); 

編輯:
治療"=不同作爲每評論。

string input = "blah=\"blah\" la=\"la\" ta=\"ta\""; 

//replace " and = with a space 
string output = Regex.Replace(input, "\"", String.Empty); 
output = Regex.Replace(output, "=", " "); 

很明顯正則表達式在這裏有點矯枉過正。

+0

感謝隊友的工作,問題是我想不要一個空間來在哪裏「用於b但沒有。所以刪除「不能用空格字符代替這麼說吧,如果你知道我的意思嗎? – scott 2011-06-01 09:50:43