Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 子字符串之间包含特殊字符的特定单词_C#_Regex_String_Substring_Match - Fatal编程技术网

C# 子字符串之间包含特殊字符的特定单词

C# 子字符串之间包含特殊字符的特定单词,c#,regex,string,substring,match,C#,Regex,String,Substring,Match,我有下面的字符串 string test = "viv-ek is a good boy.Mah - esh is Cra - zy."; 我想从那个字符串中得到{“Vivek”、“Mahesh”、“Crazy”}单词 有些单词之间只有“-”,有些单词之间有“-”。您可以使用以下正则表达式找到您的单词: \b\w+(?:\s-\s|-)\w+\b 并将匹配字符串的结果替换为空字符串(?:\s-\s |-) 你可以试试这个。看演示 这可能对你有好处 string test = "viv-ek

我有下面的字符串

string test = "viv-ek is a good boy.Mah - esh is Cra - zy.";
我想从那个字符串中得到
{“Vivek”、“Mahesh”、“Crazy”}
单词


有些单词之间只有
“-”
,有些单词之间有
“-”

您可以使用以下正则表达式找到您的单词:

\b\w+(?:\s-\s|-)\w+\b
并将匹配字符串的结果替换为空字符串
(?:\s-\s |-)

你可以试试这个。看演示


这可能对你有好处

string test = "viv-ek is a good boy.Mah - esh is Cra - zy.";
test = test.Replace(" -", "-").Replace("- ", "-").Replace(".", ". ");
//Or
//test = test.Replace(" - ", "-").Replace(".", ". ");
string[] allwords = test.Split(' ');
List<string> extractedWords=new List<string>();
foreach(string wrd in allwords)
{
    if(wrd.Contains("-"))
    {
        extractedWords.Add(wrd.Replace("-", ""));
    }
}
string test=“viv ek是一个好孩子。Mah-esh是Cra-zy。”;
测试=测试。替换(“-”,“-”)。替换(“-”,“-”)。替换(“.”,”);
//或
//测试=测试。替换(“-”,“-”)。替换(“.”,”);
string[]allwords=test.Split(“”);
List extractedWords=新列表();
foreach(所有单词中的字符串wrd)
{
if(wrd.Contains(“-”))
{
extractedWords.Add(wrd.Replace(“-”,”);
}
}

如果您只想选择这些单词,请使用以下命令:

string test = "viv-ek is a good boy.Mah - esh is Cra - zy.";
var words = 
    Regex
        .Matches(test, @"(?<part>\w+)(\s*-\s*(?<part>\w+))+\b")
        .Cast<Match>()
        .Select(
            x => string.Join(
                string.Empty, 
                x.Groups["part"].Captures.Cast<Capture>().SelectMany(capture => capture.Value)))
        .ToList();
replacedTest
contains
viv-ek是个好孩子。Mah-esh是XXX。


如果这些(“-”&“-”)是唯一可能的情况,并且不会干扰其他部分,
string.Replace
string.Split
是您的好工具……)尝试使用
test.Replace('-','')。Replace('-','')
您的确切问题是什么?每个人都发布了关于替换字符串中“-”字符的答案。如果这不是必需的答案,请再解释一下你的问题。你是对的,但我必须先在字典中检查这些单词,然后才决定是否替换
\s*-\s*
将匹配分隔符,如“-”.谢谢你的快速回复,真的吗helped@dhiraj我添加了一个简单的示例来替换使用字典检查是否这样做。
string test = "viv-ek is a good boy.Mah - esh is Cra - zy.";
var words = 
    Regex
        .Matches(test, @"(?<part>\w+)(\s*-\s*(?<part>\w+))+\b")
        .Cast<Match>()
        .Select(
            x => string.Join(
                string.Empty, 
                x.Groups["part"].Captures.Cast<Capture>().SelectMany(capture => capture.Value)))
        .ToList();
var replacingValues = new Dictionary<string, string> { { "Crazy", "XXX" } };
var test = "viv-ek is a good boy.Mah - esh is Cra - zy.";
var replacedTest =
    Regex.Replace(
        test,
        @"\b(?<part>\w+)(\s*-\s*(?<part>\w+))+\b",
        match =>
            {
                var word = string.Join(string.Empty, match.Groups["part"].Captures.Cast<Capture>().SelectMany(capture => capture.Value));
                string replacingValue;
                return replacingValues.TryGetValue(word, out replacingValue) ? replacingValue : match.Value;
            });