2

さまざまなテキスト エディターで複数行のタブやスペースを削除するためのキーボード ショートカット (Shift + Tab) は、おそらくご存知でしょう。C# で自分の文字列を使用してこれを実行したいと考えています。

私は、非常に最適化されておらず、エラーをあまり保存しない方法でそれを行う方法を知っています。しかし、これを行うための「簡単な」方法はありますか?たとえば、正規表現を使用したり、最適化されたコードを切り取って使用したりしますか?

ただし、ポイントは、最初からタブストップを 1 つだけ削除することです。

コードのアイデアをハックしたもの:

string textToEdit = "Some normal text\r\n" +
                    "\tText in tab\r\n" + 
                    "    Text in space tab\r\n" + 
                    "  \t Text in strange tab\r\n" +
                    "\t\t\tMultiple tabs\r\n" +
                    "  Not quite a tab";
int spacesInTabstop = 4;

string[] lines = textToEdit.Split('\n');

foreach (string line in lines)
{
    int charPos = 0;
    for (int i = 0; line.Length > 0 && i < spacesInTabstop + charPos; i++)
    {
        if (line[charPos] == '\t')
        {
            line = line.Remove(0, 1);
            break; //Removed tab successfully
        }
        else if (line[charPos] == ' ')
        {
            line = line.Remove(0, 1); //Remove one of four spaces
        }
        else if (char.IsWhiteSpace(line[charPos]))
        {
            charPos++; //Character to ignore
        }
        else
            break; //Nothing to remove anymore
    }
}

textToEdit = string.Join("\n", lines);

出力は次のようになります。

Some normal text
Text in tab 
Text in space tab
 Text in strange tab
        Multiple tabs
Not quite a tab
4

1 に答える 1