C# Snippets

string CombineAfterIndex(string[] InputArr, string Glue, int StartIdx)

Combine elements of a string array with a string between them, after an index from the first array

public static string CombineAfterIndex(string[] InputArr, string Glue, int StartIdx) {
	string OutputStr = String.Empty;
	for (int i = StartIdx; i < InputArr.Length; i++) {
		OutputStr += Glue + InputArr[i];
	}
	return OutputStr.Substring(1);
}

List<string> Parameterize(string Parameters)

public static List<string> Parameterize(string Parameters) {
	List<string> ReturnList = new List<string>();
	while (Parameters.Length > 0) {
		if (Parameters.Substring(0, 1) == "\"") {
			Parameters = Parameters.Substring(1);
			if (Parameters.Contains('"')) {
				ReturnList.Add(Parameters.Substring(0, Parameters.IndexOf('"')));
			} else { return null; }
		} else {
			if (Parameters.Contains(' ')) {
				ReturnList.Add(Parameters.Substring(0, Parameters.IndexOf(' ')));
			} else {
				ReturnList.Add(Parameters);
				break;
			}
		}
		Parameters = Parameters.Substring(ReturnList[ReturnList.Count - 1].Length);
		if (Parameters.Substring(0, 1) == "\"") { Parameters = Parameters.Substring(1); }
		Parameters = Parameters.TrimStart();
	}
	return ReturnList;
}

int OccurrencesInString(String Haystack, String Needle)

Counts the number of occurrences of Needle in Haystack.

/// <summary>
/// Counts the number of occurrences of Needle in Haystack.
/// </summary>
/// <param name="Haystack">String being search</param>
/// <param name="Needle">String being searched for</param>
/// <returns>Integer representing the number of occurances of Needle in Haystack</returns>
public static int OccurrencesInString(String Haystack, String Needle) {
	return Regex.Matches(Haystack, Needle).Count;
}

void PrintArrayList(ArrayList InputArray)

Prints an ArrayList object to the console.

/// <summary>
/// Prints an ArrayList object to the console.
/// </summary>
/// <param name="InputArray">ArrayList to print.</param>
public static void PrintArrayList(ArrayList InputArray) {
	Console.WriteLine("Array Output: ");
	for (int i = 0; i < InputArray.Count; i++) {
		Console.WriteLine("[" + i + "] " + InputArray[i]);
	}
}

void DumpByteArrayToFile(byte[] inputBytes, String FileName)

Dumps a byte[] Array to a file.

/// <summary>
/// Dumps a byte[] Array to a file.
/// </summary>
/// <param name="inputBytes">byte[] Array to export.</param>
/// <param name="FileName">Filename to export to.</param>
public static void DumpByteArrayToFile(byte[] inputBytes, String FileName) {
	File.Delete(FileName);
	FileStream MusicFileFS = new FileStream(FileName, FileMode.Create, FileAccess.ReadWrite);
	if (MusicFileFS.CanWrite) {
		MusicFileFS.Write(inputBytes, 0, inputBytes.Length);
	}
	MusicFileFS.Close();
}

void DumpStringToFile(String inputString, String FileName)

Dumps a String to a file.

/// <summary>
/// Dumps a String to a file.
/// </summary>
/// <param name="inputString">String to export.</param>
/// <param name="FileName">Filename to export to.</param>
public static void DumpStringToFile(String inputString, String FileName) {
	File.Delete(FileName);
	FileStream MusicFileFS = new FileStream(FileName, FileMode.Create, FileAccess.ReadWrite);
	if (MusicFileFS.CanWrite) {
		MusicFileFS.Write(Encoding.UTF8.GetBytes(inputString), 0, Encoding.UTF8.GetBytes(inputString).Length);
	}
	MusicFileFS.Close();
}

void PrintCharArrASCII(char[] inputCharArr)

Prints the ASCII values of every character in a character array delimited by a pipe character to the Console.

/// <summary>
/// Prints the ASCII values of every character in a character array delimited by a pipe character to the Console.
/// </summary>
/// <param name="inputCharArr">String to be split.</param>
public static void PrintCharArrASCII(char[] inputCharArr) {
	Console.Write("|");
	for (int i = 0; i < inputCharArr.Length; i++) {
		Console.Write(((int)inputCharArr[i]).ToString() + "|");
	}
	Console.WriteLine();
}

void PrintStringASCII(String inputStr)

Prints the ASCII values of every character in a string delimited by a pipe character to the Console.

/// <summary>
/// Prints the ASCII values of every character in a string delimited by a pipe character to the Console.
/// </summary>
/// <param name="inputStr">String to be split.</param>
public static void PrintStringASCII(String inputStr) {
	char[] charArr = inputStr.ToCharArray();
	Console.Write("|");
	for (int i = 0; i < charArr.Length; i++) {
		Console.Write(((int)charArr[i]).ToString() + "|");
	}
	Console.WriteLine();
}

void PrintByteArrASCII(byte[] inputByteArr)

Prints the ASCII values of every character in a character array delimited by a pipe character to the Console.

/// <summary>
/// Prints the ASCII values of every character in a character array delimited by a pipe character to the Console.
/// </summary>
/// <param name="inputByteArr">String to be split.</param>
public static void PrintByteArrASCII(byte[] inputByteArr) {
	char[] tempChar = Encoding.ASCII.GetChars(inputByteArr);
	Console.Write("|");
	for (int i = 0; i < tempChar.Length; i++) {
		Console.Write(((int)tempChar[i]).ToString() + "|");
	}
	Console.WriteLine();
}

ByteArrToASCII(byte[] inputByteArr)

public static string ByteArrToASCII(byte[] inputByteArr) {
	StringBuilder TempSB = new StringBuilder();
	char[] tempChar = Encoding.ASCII.GetChars(inputByteArr);
	TempSB.Append("|");
	for (int i = 0; i < tempChar.Length; i++) {
		TempSB.Append(((int)tempChar[i]).ToString() + "|");
	}
	return TempSB.ToString();
}

String RemoveNewLineChars(String inputStr)

/// <summary>
/// Removes all newline characters from a string (ASCII 10/13).
/// </summary>
/// <param name="inputStr">String to remove characters from.</param>
/// <returns>String lacking ASCII 10/13.</returns>
public static String RemoveNewLineChars(String inputStr) {
	if (inputStr != null) {
		return inputStr.Replace(Convert.ToChar(13).ToString(), "").Replace(Convert.ToChar(10).ToString(), "");
	}
	return null;
}

String StringArrToDelimitedStr(String[] inputStrArr, String Delimiter)

/// <summary>
/// Returns a string containing the inputStrArr String Array with elemented delimited by Delimiter.
/// </summary>
/// <param name="inputStrArr">String Array to enumerate.</param>
/// <param name="Delimiter">Delimiter to interleave between elements.</param>
/// <returns>String delimited by Delimiter.</returns>
public static String StringArrToDelimitedStr(String[] inputStrArr, String Delimiter) {
	String returnStr = "";
	foreach (String tempStr in inputStrArr) {
		returnStr += tempStr + Delimiter;
	}
	if (returnStr.Length > Delimiter.Length) {
		returnStr = returnStr.Substring(0, (returnStr.Length - Delimiter.Length));
	}
	return returnStr;
}

String BytesToHumanReadable(long Bytes, int Accuracy)

/// <summary>
/// Converts bytes into a human readable format rounded to an accuracy.
/// </summary>
/// <param name="Bytes">Number of bytes to be converted.</param>
/// <param name="Accuracy">Decimal accuracy. Use 0 for no decimal point.</param>
/// <returns>String in the format of [Number][Unit]</returns>
public static String BytesToHumanReadable(long Bytes, int Accuracy) {
	if (Bytes < 1073741824) {
		return Math.Round((Bytes / 1048576.0), Accuracy).ToString("0.0") + "MB";
	} else if (Bytes < 1099511627776) {
		return Math.Round((Bytes / 1073741824.0), Accuracy).ToString("0.0") + "GB";
	} else {
		return Math.Round((Bytes / 1099511627776.0), Accuracy).ToString("0.0") + "TB";
	}
}

String MillisecondsToClockFormat(double Milliseconds)

/// <summary>
/// Converts milliseconds to a clock-like format.
/// </summary>
/// <param name="Milliseconds">Number of milliseconds to convert</param>
/// <returns>Returns a hh:mm:ss formated string.</returns>
public static String MillisecondsToClockFormat(double Milliseconds) {
	TimeSpan tempTS = new TimeSpan(0, 0, 0, 0, Convert.ToInt32(Milliseconds));
	if (tempTS.Hours > 0) {
		return tempTS.Hours.ToString() + ":" + tempTS.Minutes.ToString("00") + ":" + tempTS.Seconds.ToString("00");
	} else {
		return tempTS.Minutes.ToString() + ":" + tempTS.Seconds.ToString("00");
	}
}

String MillisecondsToHumanReadable(double Milliseconds)

/// <summary>
/// Converts milliseconds to a human readable format.
/// </summary>
/// <param name="Milliseconds">Number of milliseconds to convert</param>
/// <returns>Returns a #d #h #m #s string.</returns>
public static String MillisecondsToHumanReadable(double Milliseconds) {
	TimeSpan tempTS;
	if (Milliseconds > Int32.MaxValue) {
		tempTS = new TimeSpan(0, 0, 0, Convert.ToInt32((Milliseconds - Int32.MaxValue) / 1000), Int32.MaxValue);
	} else {
		tempTS = new TimeSpan(0, 0, 0, 0, Convert.ToInt32(Milliseconds));
	}
	if (tempTS.Days > 0) {
		return tempTS.Days + "d " + tempTS.Hours.ToString() + "h " + tempTS.Minutes.ToString() + "m " + tempTS.Seconds.ToString() + "s";
	} else if (tempTS.Hours > 0) {
		return tempTS.Hours.ToString() + "h " + tempTS.Minutes.ToString() + "m " + tempTS.Seconds.ToString() + "s";
	} else if (tempTS.Minutes > 0) {
		return tempTS.Minutes.ToString() + "m " + tempTS.Seconds.ToString() + "s";
	} else {
		return tempTS.Seconds.ToString() + "s";
	}
}