Простое регулярное выражение c #, заменить и разделить вопрос - PullRequest
0 голосов
/ 01 июня 2011

Я пытаюсь удалить "из строки с помощью регулярных выражений.

Я получаю строку в метод, я хотел бы взять строку и разбить ее на слова в строке.

Ниже приведен мой код, надеюсь, вы увидите, что я делаю.

Проблема, с которой я сталкиваюсь, заключается в попытке сказать 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;

Ответы [ 5 ]

3 голосов
/ 01 июня 2011

Просто используйте:

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 голосов
/ 01 июня 2011

Я сделал это за 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+", " ");

EDIT:
Обрабатывать " и = по-разному в соответствии с комментарием.

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 голосов
/ 01 июня 2011

Я не могу помочь тебе с Regex.
В любом случае, если вам нужно только удалить = и "и разделить слова, вы можете попробовать:

string[] arr = s
    .Replace("="," ")
    .Replace("\""," ")
    .Split(new string[1] {" "}, StringSplitOptions.RemoveEmptyEntries);
0 голосов
/ 01 июня 2011

Это один из способов сделать это.Он будет искать что-нибудь в такой форме: SomeWord = "somethingelse"
и заменит это SomeWord что-то еще

var regex = new Regex(@"(\w+)=\""(.+)\""");
var result = regex.Replace("bla=\"bla\"", "$1 $2");
0 голосов
/ 01 июня 2011

Как быстро подумать - и, может быть, лай совсем не того дерева, но разве вы не хотите что-то вроде

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

например, выражение reg ". *"

...