C# - 如何在字幕文件中为每行的每行添加每个dash字符之后添加一个空间

问题描述 投票:0回答:2

没有很多

to

-嘿,怎么了?

-没什么大不了的

I使用该工具箱创建一个仅使用一个按钮来选择正确文件的接口。这是我为此按钮的代码:

private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { string text = File.ReadAllText(openFileDialog1.FileName, Encoding.GetEncoding("iso-8859-1")); text = text.Replace("-A", "- A"); File.WriteAllText(openFileDialog1.FileName, text, Encoding.GetEncoding("iso-8859-1")); } }

这基本上是用“ - ”替换为“ -a”,从而创建了一个空间。这是我想出的解决方案,我打算用每封信,包括重音字母,例如à,Á,Á,è,é等。

这不起作用。如果我将

Text= text.replace(“ - é”,“ - é”);

程序无济于事。

我想知道的是如何解决此问题。
感谢您阅读,如果您有更好的替代方法,请随时让我知道。
    

为了评论,请使用正则 var rx = new System.Text.RegularExpressions.Regex("^-([^ ])"); ... in your loop var text = rx.Replace(text, "- $1");

基本上是这样做的是,它在字符串的开头搜索破折号,但只有在弦的开始之后没有一个空间。 ()表示应“保存”仪表板的字符。 在提供的字符串中替换搜索并替换(doh!),以仪表板,空间和相同的字符匹配的匹配文本。不管是什么

Source:Https://xkcd.com/208/

Edit:您没有循环,您有一个字符串,其中包含文件的完整内容,其中每行应包含字幕线(对吗?)。 如果是这样,您可以配置正则表达式以将字符串视为行列表,如:

var rx = new Regex("^-([^ ])", RegexOptions.Multiline);

c# string replace diacritics non-ascii-characters
2个回答
6
投票
https://dotnetfiddle.net/ciflau


以重音性格,考虑使用其

Unicode

表示: string text = "-\u00C9"; //-É text = text.Replace("-\u00C9", "- \u00C9"));

,您也可以使用无破的空间进行空间更换,以防万一:

string text = "-\u00C9";
text = text.Replace("-\u00C9", "-\u00A0\u00C9"));

然后您可以使用UTF-8/UTF-16进行编码: File.WriteAllText(openFileDialog1.FileName, text, Encoding.GetEncoding("UTF-8"));


1
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.