【问题标题】:How to remove some characters or words from the middle of a string in c#? [closed]如何从c#中的字符串中间删除一些字符或单词? [关闭]
【发布时间】:2019-08-01 12:24:24
【问题描述】:

我正在使用 .NET 2.1,我需要删除字符串的一些额外部分,但问题是这些部分不会在开头或结尾出现。他们介于两者之间。例如我们有:-

阿里和艾哈迈德是非常非常要好的朋友。

但我想要

阿里和艾哈迈德是非常要好的朋友。

我知道问题的发生。有没有办法可以从字符串中删除“非常”这个词。

【问题讨论】:

    标签: c# .net string


    【解决方案1】:

    您可以使用source.Replace("very",string.Empty);

    String.Replace(oldString,newString) 将第二个参数设置为 string.Empty 与从源字符串中删除所有“oldString”相同。

    【讨论】:

    • 这将在单词very good 之间留下两个空格。他们可以替换 "very "" very" 来避免这种情况。
    • 你是对的@pappbence96 它不会删除空格
    【解决方案2】:

    你可以试试正则表达式

    要删除"very" 的后续重复项:

      using System.Text.RegularExpressions;
    
      ... 
    
      string source = "Ali and Ahmed are very very good friends.";
    
      string result = Regex.Replace(source, @"(very)(\s+\1)+", match => match.Groups[1].Value);
    

    要删除任何个单词的后续重复:

      string source = "Ali and Ahmed are are are very very good friends.";
    
      string result = Regex.Replace(source, @"(\w+)(\s+\1)+", match => match.Groups[1].Value);
    

    在这两种情况下,result 都是

      Ali and Ahmed are very good friends.
    

    【讨论】:

    • 假设用例确实是要删除重复的单词,很好的答案+1
    • @Dmitry 我没有考虑重复的单词。我只是在问如何从字符串中删除我想要的任何单词。
    【解决方案3】:

    如果您知道要删除的部分的起始索引和结束索引,则可以使用此方法

    public static string Delete(string str, int start, int end) 
    {
        return str.Substring(0, start)
             + str.Substring(end, str.Length-end);
    }
    

    这里是要删除的部分的排他索引 例如

    Delete("0123456789",3,5) -> "01256789"
    

    Try it online!

    【讨论】:

      猜你喜欢
      • 2011-09-05
      • 2021-12-25
      • 2022-01-24
      • 1970-01-01
      • 2023-01-30
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多