C#String.Trim()不从MailMessage.Subject中删除字符

C#String.Trim()不从MailMessage.Subject中删除字符,c#,trim,mailmessage,C#,Trim,Mailmessage,我试图从MailMessage对象的Subject属性中删除某些符号。我所经历的是它什么也不做。即使将Subject分配给字符串并对其进行修剪,最终的Subject仍然包含符号。(示例中未显示) 消息框只是为了查看此时是否删除了符号,path稍后将被放入一个方法中 邮件有主题RE:dog,。Trim尝试删除: 消息框显示C:\Users\user\Documents\EML\RE:dog.EML 从MSDN: String.Trim方法()-从当前字符串对象中删除所有前导和尾随空格字符 因此,T

我试图从MailMessage对象的
Subject
属性中删除某些符号。我所经历的是它什么也不做。即使将
Subject
分配给字符串并对其进行修剪,最终的
Subject
仍然包含符号。(示例中未显示)

消息框只是为了查看此时是否删除了符号,
path
稍后将被放入一个方法中

邮件有主题
RE:dog
。Trim
尝试删除

消息框显示
C:\Users\user\Documents\EML\RE:dog.EML

从MSDN:

String.Trim方法()-从当前字符串对象中删除所有前导和尾随空格字符

因此,Trim不会删除字符串中间的字符。评论者建议改为使用Replace,但并没有像您使用的那样使用字符数组的签名。一个简单的方法就是扩展方法

    class Program
    {

        static void Main(string[] args)
        {
            string text = "This:is~a>test";
            string subject = text.ReplaceFromCollection(new char[] { ':', '~', '>'}); //symbol list, like ":", "~", ">"

            Console.WriteLine($"{text}\n{subject}");
            Console.ReadLine();
        }

    }

    static class Extensions
    {
        public static String ReplaceFromCollection(this string text, IEnumerable<char> characters)
        {
            foreach (var chr in characters)
            {
                text = text.Replace(chr.ToString(), String.Empty);
            }
            return text;
        }
    }
类程序
{
静态void Main(字符串[]参数)
{
string text=“这是~a>测试”;
string subject=text.ReplaceFromCollection(新字符[]{':','~','>'});//符号列表,如“:”,“~”,“>”
WriteLine($“{text}\n{subject}”);
Console.ReadLine();
}
}
静态类扩展
{
公共静态字符串ReplaceFromCollection(此字符串文本,IEnumerable字符)
{
foreach(以字符为单位的变量chr)
{
text=text.Replace(chr.ToString(),String.Empty);
}
返回文本;
}
}
使用此方法,字符串中与数组中的字符匹配的每个字符都将逐个替换为空字符串。然后将结果传回

关于扩展方法。

来自MSDN:

String.Trim方法()-从当前字符串对象中删除所有前导和尾随空格字符

因此,Trim不会删除字符串中间的字符。评论者建议改为使用Replace,但并没有像您使用的那样使用字符数组的签名。一个简单的方法就是扩展方法

    class Program
    {

        static void Main(string[] args)
        {
            string text = "This:is~a>test";
            string subject = text.ReplaceFromCollection(new char[] { ':', '~', '>'}); //symbol list, like ":", "~", ">"

            Console.WriteLine($"{text}\n{subject}");
            Console.ReadLine();
        }

    }

    static class Extensions
    {
        public static String ReplaceFromCollection(this string text, IEnumerable<char> characters)
        {
            foreach (var chr in characters)
            {
                text = text.Replace(chr.ToString(), String.Empty);
            }
            return text;
        }
    }
类程序
{
静态void Main(字符串[]参数)
{
string text=“这是~a>测试”;
string subject=text.ReplaceFromCollection(新字符[]{':','~','>'});//符号列表,如“:”,“~”,“>”
WriteLine($“{text}\n{subject}”);
Console.ReadLine();
}
}
静态类扩展
{
公共静态字符串ReplaceFromCollection(此字符串文本,IEnumerable字符)
{
foreach(以字符为单位的变量chr)
{
text=text.Replace(chr.ToString(),String.Empty);
}
返回文本;
}
}
使用此方法,字符串中与数组中的字符匹配的每个字符都将逐个替换为空字符串。然后将结果传回

在扩展方法上。

String.Trim(Char[])方法,根据,从当前字符串对象中删除数组中指定的一组字符的所有前导和尾随。如果要从字符串中删除指定字符列表中出现的所有字符,即使它们没有出现在字符串的开头或结尾,也可以使用不同的方法

给定以下示例字符串和以下替换:

String text = "This is: the~ mail sub~ject!";
Char[] replacements = new Char[] { ':', '~' };
您可以使用各种方法执行此操作。以下是一个列表,其中包含一些:

1)使用和

2)使用LINQ

text = new String
(
    (from c in text
    where !replacements.Contains(c)
    select c).ToArray()
);
或:

3)使用正则表达式

text = Regex.Replace(text, "[:~]", String.Empty);
4)使用循环和

5)使用扩展方法

public static String RemoveChars(this String input, params Char[] chars)
{
    StringBuilder builder = new StringBuilder();

    for (Int32 i = 0; i < input.Length; ++i)
    {
        if (!chars.Contains(input[i]))
            builder.Append(input[i]);
    }

    return builder.ToString();
}

text = text.RemoveChars(replacements);
公共静态字符串RemoveChars(此字符串输入,params Char[]chars)
{
StringBuilder=新的StringBuilder();
对于(Int32 i=0;i
最终输出总是相同的:

这是邮件主题

String.Trim(Char[])
方法根据从当前字符串对象中删除数组中指定的一组字符的所有前导和尾随匹配项。如果要从字符串中删除指定字符列表中出现的所有字符,即使它们没有出现在字符串的开头或结尾,也可以使用不同的方法

给定以下示例字符串和以下替换:

String text = "This is: the~ mail sub~ject!";
Char[] replacements = new Char[] { ':', '~' };
您可以使用各种方法执行此操作。以下是一个列表,其中包含一些:

1)使用和

2)使用LINQ

text = new String
(
    (from c in text
    where !replacements.Contains(c)
    select c).ToArray()
);
或:

3)使用正则表达式

text = Regex.Replace(text, "[:~]", String.Empty);
4)使用循环和

5)使用扩展方法

public static String RemoveChars(this String input, params Char[] chars)
{
    StringBuilder builder = new StringBuilder();

    for (Int32 i = 0; i < input.Length; ++i)
    {
        if (!chars.Contains(input[i]))
            builder.Append(input[i]);
    }

    return builder.ToString();
}

text = text.RemoveChars(replacements);
公共静态字符串RemoveChars(此字符串输入,params Char[]chars)
{
StringBuilder=新的StringBuilder();
对于(Int32 i=0;i
最终输出总是相同的:

这是邮件主题


您指的是mailMessage.Subject.Trim从结尾处删除。@john我也尝试了String.Replace(),但也没有得到任何结果。也许您可以显示替换?您指的是mailMessage.Subject.Trim从结尾处删除。@john我也尝试了String.Replace(),但没有得到任何结果