【问题标题】:Simple Regex c#, Replace and Split Question简单的正则表达式 c#,替换和拆分问题
【发布时间】:2011-06-01 09:18:02
【问题描述】:

我正在尝试使用正则表达式从字符串中删除 "。

我正在将一个字符串接收到一个方法中,我想获取该字符串并将其拆分为字符串中的单词。

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

我遇到的问题是试图告诉 Regex “是我想要删除的内容。我尝试了很多方法:我在 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;

【问题讨论】:

  • 不要太担心返回或类或参数等,主要是我无法解决的血腥正则表达式我尝试过@"\"+"和"\"+"和@"/ /"+" 和@""+",由于 c# 中的语法,大多数都不允许使用,但上帝的正则表达式真的让我很难过。
  • 我真的怀疑你需要正则表达式。所以我很清楚blah="blah" la="la" ta="ta" 应该变成blah blah la la ta ta
  • blahblahblah 是什么? Regex r = new Regex(@"/"+"); 行无法编译。 blah_Found 何时声明?
  • 您能否编辑问题以显示您拥有的字符串以及您想要的字符串,我们可以制作正则表达式,甚至提供代码。我在读你想让blah="blah" la="la" ta="ta" 变成blah blah la la ta ta,基本上删除"=,对吧?
  • @Ash ya @ Jodrell,对不起,我遗漏了一些东西,它为我编译,更像是一个一般性问题,抱歉。

标签: c# regex replace split


【解决方案1】:

只需使用:

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 );

对于 '=' 再做一次,以此类推...

你的问题需要更精确。

【讨论】:

  • 我什至不需要正则表达式大声笑,我尝试了这种方法,我认为这是我要走的路,问题是它似乎留下了一个空间,我尝试改变 String.Empty到“”,它仍然留下一个空格。
  • 是的,它似乎留了一个空格:(但考虑到字符串每次都会改变(但格式相同),这可能是唯一的选择。
  • @Scott,这使= 完好无损,您的问题要求删除它们,不是吗?
  • @ Jodrell 在一定程度上很好,我可以弄清楚如何删除 = 我的主要问题是“即使使用 exscape char 也会破坏语法。当我使用上面的代码时,我似乎得到了一个空格char 其中“曾经是,我想”已删除,但没有空格字符,因此如果您知道我的意思,它甚至没有替换为空格字符?
【解决方案2】:

作为一个快速的想法 - 和吠叫可能完全是错误的树,但你不想要类似的东西

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

例如,“.*”的正则表达式

【讨论】:

  • 伙计,这有点像我在通配符分隔符之后的样子。
【解决方案3】:

这是一种方法。 它将搜索该形式的任何内容:SomeWord="somethingelse"
并将其替换为 SomeWord 其他东西

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

【讨论】:

  • 那行得通,谢谢伙计,不幸的是,我正在放弃muliple blahblahs ...所以一次我可能会通过blah="blah",而另一次我可能会通过blah="blah" meh="meh " etc="etc"... 等等 :(
  • 啊,我看到了 2 个正则表达式,还以为你是先拆分然后一个一个清理它们...
【解决方案4】:

我无法帮助您使用正则表达式。
无论如何,如果您只需要删除 = 和 " 并拆分单词,您可以尝试:

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

【讨论】:

  • 有趣的 Marco 现在正在尝试,如果我可以避免使用正则表达式,我会喜欢!,只需阅读它应该将单词放入数组中?现在试试代码,谢谢。
  • 代码工作伙伴但我将如何调整它以不替换为空格字符“”但什么都不替换?甚至没有空格字符?
  • @scott: 使用"" :) 但是如果你用空字符串替换我不知道Split 函数是否有效......
【解决方案5】:

我用了两遍

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, "=", " ");  

显然,这里的正则表达式有点矫枉过正。

【讨论】:

  • 感谢合作伙伴,问题是我不希望有一个空间成为“曾经存在但什么都没有。所以删除”而不是替换为空格字符可以这么说,如果你知道我的意思?
猜你喜欢
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-30
  • 2014-01-22
  • 1970-01-01
相关资源
最近更新 更多