Заменить всю или частичную строку - PullRequest
0 голосов
/ 31 декабря 2018

в C # я бы использовал Replace в строках, которые соответствуют всей строке или также одной части строки:

Мой шаблон example string

Мои строки

This is the first example string
This is the second example

Что я хочу получить

This is the first
This is the second

Если я использую .Replace(pattern, string) Я добиваюсь только первого результата, а не второго.

Пожалуйста, кто-нибудь может мне помочь?

Вот более исчерпывающий пример:

Golf 7ª serie
GOLF 1.6 TDI TREND

Golf 7ª serie
Golf 1.6 TDI 90 CV 5p. Business Trendline BlueMotion Tech.

Freelander 2ª serie
Freelander 2.2 TD4 S.W. XS

Juke
Juke 1.5 dCi Start&Stop Acenta

Как вы можете видеть, в первых 3 примерах шаблон th частично соответствует строке, тогда как в 4-м примере он полностью соответствует строке.Я хочу получить:

1.6 TDI TREND
1.6 TDI 90 CV 5p. Business Trendline BlueMotion Tech.
2.2 TD4 S.W. XS
1.5 dCi Start&Stop Acenta

Поэтому любое слово, содержащееся в первой строке, должно быть удалено из второй

Ответы [ 5 ]

0 голосов
/ 31 декабря 2018

Эффективный способ сделать это позволит избежать, если это возможно string.Replace.

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

var patternWords = 
    new HashSet<string>(
        pattern.Split(
           new[] { ‘ ‘ },
           StringSplitOptions.RemoveEmptyEntries));

var words = str.Split(
    new[] { ‘ ‘ },
    StringSplitOptions.RemoveEmptyEntries);
var matches = words.Where(
    w => !patternWords.Contains(w));
var newStr = string.Join(
    “ “, matches);
0 голосов
/ 31 декабря 2018

Если вы хотите все до примера, самый простой способ:

string substring = yourstring.Substring(0, one.IndexOf("example"));

Также доступен пример регулярного выражения:

Match result = Regex.Match("yourstring", @"^.*?(?=example)");
Console.WriteLine(result);
0 голосов
/ 31 декабря 2018

Попробуй это.Это общее решение.

static void Main(string[] args)
{
    var fs = "This is the first example string";
    var ss = "This is the second example";
    var patternString = "example string";

    var patterns = patternString.Split(" ");

    foreach (string pattern in patterns)
    {
        fs = fs.Replace(pattern, "");
        ss = ss.Replace(pattern, "");
    }

}
0 голосов
/ 31 декабря 2018

Вы можете перебирать каждое слово в шаблоне и заменять их одно на другое

var val = "This is the first example string";
var pattern = "example string";

foreach(var removeWord in pattern.Split(null))
{
    val = val.Replace(removeWord, string.Empty);
}
0 голосов
/ 31 декабря 2018

Использование следующего должно удалить и 'example' и 'string' из начальной строки.

using System.Text.RegularExpressions;

var result = Regex.Replace("This is the first example string", "(example|string)?", "" );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...