首页 > 解决方案 > C#如何删除句尾前的空格

问题描述

我试图在句子结尾之前删除空格但没有成功。我想用拆分功能来做,但进展不顺利。我唯一成功的就是在句子结束后添加空格。这是我的代码:

static void Main(string[] args)
        {
            System.Windows.Forms.OpenFileDialog dlgOpen = new System.Windows.Forms.OpenFileDialog();
            if (dlgOpen.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                StreamReader sr = new StreamReader(dlgOpen.FileName);
                string dat1 = sr.ReadToEnd();
                string dat2 = Path.GetDirectoryName(dlgOpen.FileName);
                string dat3 = Path.GetFileNameWithoutExtension(dlgOpen.FileName);
                string dat4 = Path.GetExtension(dlgOpen.FileName);

                dat2 = dat2 + "/" + dat3 + "_norm" + dat4;
                sz1(ref dat1);
                Console.Write(dat1);
                StreamWriter sw = new StreamWriter(dat2, false);
                sw.WriteLine(dat1);
                sw.Flush();
                sw.Close();

                Console.ReadLine();
            }
        }
        static void sz1(ref string dat1)
        {
            char[] ArrayCharacters = { '.', ':', ',', ';', '!', '?' };
            int i = -1;
            dat1 = dat1.Trim();

            for (int k = 0; k < dat1.Length; k++)
            {
                dat1 = dat1.Replace("  ", " ");
            }

            do
            {
                i = dat1.IndexOfAny(ArrayCharacters, i + 1);

                if (i != -1)
                {
                    dat1 = dat1.Insert((i + 1), " ");
                    dat1 = dat1.Replace("  ", " ");
                }
            } while (i != -1);

            do
            {
                i = dat1.IndexOfAny(ArrayCharacters, i + 1);

                if (i != -1)
                {
                    dat1 = dat1.Insert((i - 1), "  ");
                    dat1 = dat1.Replace("  ", " ");
                    dat1 = dat1.Remove(i - 1, 1);
                }
            } while (i != -1);
        }

标签: c#

解决方案


一种选择是使用正则表达式:

string pattern = "\\s+$";
string replacement = "";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(dat1, replacement);

推荐阅读