c# - 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);
}
解决方案
一种选择是使用正则表达式:
string pattern = "\\s+$";
string replacement = "";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(dat1, replacement);
推荐阅读
- javascript - React OIDC-Client IE Promise 未定义
- cxf - Maven cxf 插件日志记录
- matlab - 如何用矩形放样以在 MATLAB 中创建灵活的 3D 封闭管道?
- angular - 如何检查子元素是否有类?
- selenium-webdriver - 测试用例不适用于远程 Web 驱动程序,但在本地运行良好
- ruby-on-rails - Rails 5 LoadError(无法加载此类文件——roo)
- kubernetes - 如何将 PodSecurityPolicy 角色绑定到组?
- python - 在面板数据上建立回归模型的任何有效方法?
- php - 如何构建这样的无键数组?
- css - 如何更改材质ui表中所选行的文本颜色