.NET Fiddle

CSharp · Console

/Program.cs

using System;
					
public class Program
{
	public static void Main()
	{

		string original = "foo bar foo $ bar $ foo bar $ "; 
		string desired_output = "foo bar foo $ bar foo bar"; 

		var buffer = original.ToCharArray();
		bool found = false;
		int dest = 0;
		for(int i = 0; i < buffer.Length; i++)
		{
			if (buffer[i] != '$' || !found)
			{
			   buffer[dest] = buffer[i];
			   dest++;
			}
			if (buffer[i] == '$') found = true;
		}
		
		var result = new string(buffer, 0, dest).Replace("  ", " ").Trim();
			
		Console.WriteLine(result);
		Console.WriteLine(desired_output == result);
	}
}
;