2011-06-01 57 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