moved into MBS.Framework StringExtensions

This commit is contained in:
Michael Becker 2023-06-05 15:56:30 -04:00
parent b3f45df4dd
commit 283f4c2290
13 changed files with 14 additions and 186 deletions

View File

@ -229,184 +229,6 @@ namespace UniversalEditor
return result;
}
#region Splitting
public static T[] Split<T>(this string value, params char[] separator)
{
return value.Split<T>(separator, -1, StringSplitOptions.None);
}
public static T[] Split<T>(this string value, char[] separator, int count)
{
return value.Split<T>(separator, count, StringSplitOptions.None);
}
public static T[] Split<T>(this string value, char[] separator, int count, StringSplitOptions options)
{
string[] separators = new string[separator.Length];
for (int i = 0; i < separator.Length; i++)
{
separators[i] = separator[i].ToString();
}
return value.Split<T>(separators, count, options);
}
public static T[] Split<T>(this string value, params string[] separator)
{
return value.Split<T>(separator, -1, StringSplitOptions.None);
}
public static T[] Split<T>(this string value, string[] separator, int count)
{
return value.Split<T>(separator, count, StringSplitOptions.None);
}
public static T[] Split<T>(this string value, string[] separator, int count, StringSplitOptions options)
{
string[] splitt = null;
if (count < 0)
{
splitt = value.Split(separator, options);
}
else
{
splitt = value.Split(separator, count, options);
}
T[] values = new T[splitt.Length];
for (int i = 0; i < splitt.Length; i++)
{
if (!string.IsNullOrEmpty(splitt[i]))
{
values[i] = (T)Convert.ChangeType(splitt[i], typeof(T));
}
}
return values;
}
public static string[] Split(this string value, string separator)
{
return value.Split(new string[] { separator });
}
public static string[] Split(this string value, string[] separator)
{
return value.Split(separator, StringSplitOptions.None);
}
public static string[] Split(this string value, string[] separator, string ignore)
{
return value.Split(separator, ignore, ignore);
}
public static string[] Split(this string value, string[] separator, string ignoreBegin, string ignoreEnd)
{
return value.Split(separator, ignoreBegin, ignoreEnd, StringSplitOptions.None, -1);
}
public static string[] Split(this string value, string[] separator, StringSplitOptions options, int count, string ignore)
{
return value.Split(separator, ignore, ignore, options, count);
}
public static string[] Split(this string value, char[] separator, string ignore)
{
return value.Split(separator, ignore, ignore);
}
public static string[] Split(this string value, char[] separator, string ignoreBegin, string ignoreEnd)
{
return value.Split(separator, ignoreBegin, ignoreEnd, StringSplitOptions.None, -1);
}
public static string[] Split(this string value, char[] separator, string ignore, StringSplitOptions options, int count)
{
return value.Split(separator, ignore, ignore, options, count);
}
public static string[] Split(this string value, char[] separator, string ignoreBegin, string ignoreEnd, StringSplitOptions options, int count)
{
List<string> entries = new List<string>();
for (int i = 0; i < separator.Length; i++)
{
char sep = separator[i];
entries.Add(sep.ToString());
}
return value.Split(entries.ToArray(), ignoreBegin, ignoreEnd, options, count);
}
public static string[] Split(this string value, string[] separator, string ignoreBegin, string ignoreEnd, StringSplitOptions options, int count)
{
return value.Split(separator, ignoreBegin, ignoreEnd, options, count, true);
}
public static string[] Split(this string value, string[] separator, string ignoreBegin, string ignoreEnd, StringSplitOptions options, int count, bool discardIgnoreString)
{
List<string> entries = new List<string>();
bool ignoring = false;
bool continueOutside = false;
string next = string.Empty;
int i = 0;
while (i < value.Length)
{
if (i + ignoreBegin.Length > value.Length)
{
goto IL_70;
}
if (ignoring || !(value.Substring(i, ignoreBegin.Length) == ignoreBegin))
{
goto IL_70;
}
ignoring = true;
if (!discardIgnoreString)
{
next += ignoreBegin;
}
IL_16F:
i++;
continue;
IL_70:
if (i + ignoreEnd.Length <= value.Length)
{
if (ignoring && value.Substring(i, ignoreEnd.Length) == ignoreEnd)
{
ignoring = false;
if (!discardIgnoreString)
{
next += ignoreEnd;
}
goto IL_16F;
}
}
if (!ignoring)
{
int j = 0;
while (j < separator.Length)
{
if (i + separator[j].Length <= value.Length)
{
if (value.Substring(i, separator[j].Length) == separator[j])
{
if (count > -1 && (entries.Count >= count - 1))
{
next = value.Substring(i - next.Length);
entries.Add(next);
i = value.Length - 1;
break;
}
else
{
entries.Add(next);
next = string.Empty;
i += separator[j].Length - 1;
continueOutside = true;
}
}
}
j++;
continue;
}
}
if (continueOutside)
{
continueOutside = false;
goto IL_16F;
}
next += value[i];
goto IL_16F;
}
if (!string.IsNullOrEmpty(next))
{
entries.Add(next);
next = null;
}
return entries.ToArray();
}
#endregion
#region Endianness
[CLSCompliant(false)]
public static ushort SwapEndian(this ushort x)

View File

@ -20,7 +20,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
using System;
using MBS.Framework;
using UniversalEditor.IO;
using UniversalEditor.ObjectModels.CoreObject;

View File

@ -23,6 +23,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MBS.Framework;
using UniversalEditor.ObjectModels.Markup;
using UniversalEditor.ObjectModels.PropertyList;

View File

@ -20,7 +20,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
using System;
using MBS.Framework;
using UniversalEditor.ObjectModels.PropertyList;
namespace UniversalEditor.DataFormats.PropertyList.Text

View File

@ -21,6 +21,7 @@
using System;
using System.Collections.Generic;
using MBS.Framework;
using MBS.Framework.Logic.Conditional;
using UniversalEditor.Accessors;
using UniversalEditor.ObjectModels.Markup;

View File

@ -20,7 +20,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
using System;
using MBS.Framework;
using UniversalEditor.ObjectModels.Markup;
namespace UniversalEditor.ProjectTaskActions

View File

@ -32,6 +32,8 @@ using UniversalEditor.DataFormats.Multimedia.Audio.VoicebankPhonemeDictionary;
using UniversalEditor.Accessors;
using MBS.Framework;
namespace UniversalEditor.DataFormats.Multimedia.Audio.Synthesized.UTAU
{
/// <summary>

View File

@ -21,7 +21,7 @@
using System;
using System.Text;
using MBS.Framework;
using UniversalEditor.ObjectModels.Multimedia.Subtitle;
namespace UniversalEditor.DataFormats.Multimedia.Subtitle.SubRip

View File

@ -20,7 +20,7 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
using System;
using MBS.Framework;
using UniversalEditor.IO;
using UniversalEditor.ObjectModels.Multimedia3D.Accessory;

View File

@ -21,7 +21,7 @@
using System;
using System.Text;
using MBS.Framework;
using MBS.Framework.Logic.Conditional;
using UniversalEditor.ObjectModels.SourceCode;

View File

@ -23,7 +23,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MBS.Framework;
using UniversalEditor.IO;
using UniversalEditor.ObjectModels.SourceCode;
using UniversalEditor.ObjectModels.SourceCode.CodeElementReferences;
@ -886,7 +886,7 @@ namespace UniversalEditor.DataFormats.SourceCode
{
CodeCommentElement comment = (obj as CodeCommentElement);
string[] lines = comment.Content.Split (new string[] { System.Environment.NewLine });
string[] lines = comment.Content.Split(new string[] { Environment.NewLine });
if (comment.Multiline && !comment.IsDocumentationComment) {
sb.Append (indent);
sb.AppendLine ("/* ");

View File

@ -22,6 +22,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using MBS.Framework;
using UniversalEditor;
using UniversalEditor.IO;
using UniversalEditor.ObjectModels.SourceCode;

View File

@ -27,6 +27,7 @@ using UniversalEditor.DataFormats.Multimedia.Audio.Synthesized.MIDI;
using UniversalEditor.ObjectModels.Multimedia.Audio.Synthesized;
using UniversalEditor.ObjectModels.PropertyList;
using System.Linq;
using MBS.Framework;
namespace UniversalEditor.Plugins.Vocaloid.DataFormats.Multimedia.Audio.Synthesized.Vocaloid
{