Files
YesNt-Interpreter/YesNt.Interpreter/Utilities/StringExtentions.cs
T
Stone_Red c1b581e2db Fix bugs and add new statement
- Add clear call stack (`ccs`) statement
- Use `\v` instead of `\r` to support escape sequences in the future
2022-03-31 21:51:31 +02:00

53 lines
1.6 KiB
C#

using System;
using System.Globalization;
using System.Text;
namespace YesNt.Interpreter.Utilities
{
public static class StringExtentions
{
public static string ToSaveString(this string input)
{
StringBuilder output = new StringBuilder();
foreach (char c in input)
{
output.Append($"\v{c}\v");
}
return output.ToString();
}
public static string FromSaveString(this string input)
{
return input.Replace("\v", "");
}
public static bool ToStandardizedNumber(this string input, out double result)
{
return double.TryParse(input.FromSaveString().Replace(',', '.'), NumberStyles.Any, CultureInfo.InvariantCulture, out result);
}
public static string ReplaceFirstOccurrence(this string input, string oldValue, string newValue)
{
int place = input.IndexOf(oldValue);
return input.Remove(place, oldValue.Length).Insert(place, newValue);
}
public static string ReplaceLastOccurrence(this string input, string oldValue, string newValue)
{
int place = input.LastIndexOf(oldValue);
return input.Remove(place, Math.Min(oldValue.Length, input.Length - place)).Insert(place, newValue);
}
public static int WhiteSpaceAtEnd(this string input)
{
int count = 0;
int index = input.Length - 1;
while (index >= 0 && char.IsWhiteSpace(input[index--]))
{
count++;
}
return count;
}
}
}