mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-11-22 11:12:36 +01:00
Improved support for wsrt files + allow for \r\r\n newline
This commit is contained in:
parent
d5d6e9af49
commit
73d4e82974
@ -87,7 +87,7 @@ namespace Nikse.SubtitleEdit.Core
|
|||||||
|
|
||||||
public static string[] SplitToLines(this string source)
|
public static string[] SplitToLines(this string source)
|
||||||
{
|
{
|
||||||
return source.Replace("\r\n", "\n").Replace('\r', '\n').Replace('\u2028', '\n').Split('\n');
|
return source.Replace("\r\r\n", "\n").Replace("\r\n", "\n").Replace('\r', '\n').Replace('\u2028', '\n').Split('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
// http://www.codeproject.com/Articles/43726/Optimizing-string-operations-in-C
|
// http://www.codeproject.com/Articles/43726/Optimizing-string-operations-in-C
|
||||||
|
@ -126,7 +126,6 @@ namespace Nikse.SubtitleEdit.Core
|
|||||||
|
|
||||||
_paragraphs = new List<Paragraph>();
|
_paragraphs = new List<Paragraph>();
|
||||||
|
|
||||||
var lines = new List<string>();
|
|
||||||
StreamReader sr;
|
StreamReader sr;
|
||||||
if (useThisEncoding != null)
|
if (useThisEncoding != null)
|
||||||
{
|
{
|
||||||
@ -164,8 +163,7 @@ namespace Nikse.SubtitleEdit.Core
|
|||||||
}
|
}
|
||||||
|
|
||||||
encoding = sr.CurrentEncoding;
|
encoding = sr.CurrentEncoding;
|
||||||
while (!sr.EndOfStream)
|
var lines = sr.ReadToEnd().SplitToLines().ToList();
|
||||||
lines.Add(sr.ReadLine());
|
|
||||||
sr.Close();
|
sr.Close();
|
||||||
|
|
||||||
foreach (SubtitleFormat subtitleFormat in SubtitleFormat.AllSubtitleFormats)
|
foreach (SubtitleFormat subtitleFormat in SubtitleFormat.AllSubtitleFormats)
|
||||||
@ -572,6 +570,8 @@ namespace Nikse.SubtitleEdit.Core
|
|||||||
public string GetFastHashCode()
|
public string GetFastHashCode()
|
||||||
{
|
{
|
||||||
var sb = new StringBuilder(Paragraphs.Count * 50);
|
var sb = new StringBuilder(Paragraphs.Count * 50);
|
||||||
|
if (Header != null)
|
||||||
|
sb.Append(Header.Trim());
|
||||||
for (int i = 0; i < Paragraphs.Count; i++)
|
for (int i = 0; i < Paragraphs.Count; i++)
|
||||||
{
|
{
|
||||||
var p = Paragraphs[i];
|
var p = Paragraphs[i];
|
||||||
|
@ -12,6 +12,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
private StringBuilder _errors;
|
private StringBuilder _errors;
|
||||||
private int _lineNumber;
|
private int _lineNumber;
|
||||||
private bool _isMsFrames;
|
private bool _isMsFrames;
|
||||||
|
private bool _isWsrt;
|
||||||
|
|
||||||
private enum ExpectingLine
|
private enum ExpectingLine
|
||||||
{
|
{
|
||||||
@ -73,7 +74,7 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
_errors = new StringBuilder();
|
_errors = new StringBuilder();
|
||||||
_lineNumber = 0;
|
_lineNumber = 0;
|
||||||
_isMsFrames = true;
|
_isMsFrames = true;
|
||||||
|
_isWsrt = fileName != null && fileName.EndsWith(".wsrt", StringComparison.OrdinalIgnoreCase);
|
||||||
_paragraph = new Paragraph();
|
_paragraph = new Paragraph();
|
||||||
_expecting = ExpectingLine.Number;
|
_expecting = ExpectingLine.Number;
|
||||||
_errorCount = 0;
|
_errorCount = 0;
|
||||||
@ -168,6 +169,15 @@ namespace Nikse.SubtitleEdit.Core.SubtitleFormats
|
|||||||
case ExpectingLine.Text:
|
case ExpectingLine.Text:
|
||||||
if (!string.IsNullOrWhiteSpace(line) || IsText(next))
|
if (!string.IsNullOrWhiteSpace(line) || IsText(next))
|
||||||
{
|
{
|
||||||
|
if (_isWsrt && !string.IsNullOrEmpty(line))
|
||||||
|
{
|
||||||
|
for (int i = 30; i < 40; i++)
|
||||||
|
{
|
||||||
|
line = line.Replace("<" + i + ">", "<i>");
|
||||||
|
line = line.Replace("</" + i + ">", "</i>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (_paragraph.Text.Length > 0)
|
if (_paragraph.Text.Length > 0)
|
||||||
_paragraph.Text += Environment.NewLine;
|
_paragraph.Text += Environment.NewLine;
|
||||||
_paragraph.Text += RemoveBadChars(line).TrimEnd().Replace(Environment.NewLine + Environment.NewLine, Environment.NewLine);
|
_paragraph.Text += RemoveBadChars(line).TrimEnd().Replace(Environment.NewLine + Environment.NewLine, Environment.NewLine);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 14.00
|
||||||
# Visual Studio 14
|
# Visual Studio 14
|
||||||
VisualStudioVersion = 14.0.25420.1
|
VisualStudioVersion = 14.0.23107.0
|
||||||
MinimumVisualStudioVersion = 14.0.23107.0
|
MinimumVisualStudioVersion = 14.0.23107.0
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubtitleEdit", "SubtitleEdit.csproj", "{511A5B59-1C35-4719-8536-23B19AF9B21A}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubtitleEdit", "SubtitleEdit.csproj", "{511A5B59-1C35-4719-8536-23B19AF9B21A}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
Loading…
Reference in New Issue
Block a user