Преобразуйте вкладки в пробелы в строке.NET

Функция библиотеки write обрабатывает ввод только от 0 до 180, что означает, что при серво 270 градусов 180 градусов представляют максимальное значение. Я бы порекомендовал переключиться на использование функции writeMicroseconds , так как более понятно, с каким значением вы работаете.

write(120) должны производить близко к углу 180 градусов.

11
задан Peter Mortensen 31 May 2015 в 11:19
поделиться

9 ответов

Я не уверен, как вкладки будут читать в из текстового файла Unix, или независимо от того, что Ваши различные форматы, но это работает на встроенный текст. Возможно, это поможет.

var textWithTabs = "some\tvalues\tseperated\twith\ttabs";
var textWithSpaces = string.Empty;

var textValues = textWithTabs.Split('\t');

foreach (var val in textValues)
{
    textWithSpaces += val + new string(' ', 8 - val.Length % 8);
}

Console.WriteLine(textWithTabs);
Console.WriteLine(textWithSpaces);
Console.Read();
6
ответ дан 3 December 2019 в 04:14
поделиться

Можно использовать функцию замены:

char tabs = '\u0009';
String newLine = withTabs.Replace(tabs.ToString(), "    ");
0
ответ дан 3 December 2019 в 04:14
поделиться

К сожалению, необходимо принять, сколько пробелов вкладка представляет. Необходимо установить это на фиксированное значение (как упомянутые четыре) или сделать его пользовательской опцией.

Самый быстрый способ сделать это-.NET, (я использую C#):

var NewString = "This is a string with a    Tab";
var TabLength = 4;
var TabSpace = new String(' ', TabLength);

NewString = NewString.Replace("\t", TabSpace);

Можно затем заменить переменную TabLength к чему-либо, что Вы хотите, обычно, как упомянуто ранее, четыре пробела.

Вкладки во всех операционных системах являются той же длиной, одной вкладкой! То, что отличается, является способом, которым программное обеспечение отображает их, обычно это - эквивалентная ширина четырех пробелов, и это также предполагает, что дисплей использует шрифт фиксированной ширины, такой как Courier New.

Например, мой предпочтительный IDE позволяет мне изменять ширину символа табуляции к значению, которое подходит мне.

16
ответ дан 3 December 2019 в 04:14
поделиться

Я думаю, что Вы означаете говорить, требуется заменить вкладки эффективной суммой пробелов, до которых они были расширены. Первый путь, который приходит на ум, не включает регулярные выражения (и я не знаю, что эта проблема могла быть решена с ними).

  • Шаг через символ строки символом, отслеживанием Вашей текущей позиции в строке.
  • Когда Вы находите вкладку, заменяете ее пробелами N, где N = tab_length - (current_position % tab_length).
  • Добавьте N к своей текущей позиции и продолжите хотя строка.
3
ответ дан 3 December 2019 в 04:14
поделиться

Вы хотите смочь преобразовать вкладку в пробелы N? Одна быстрая и грязная опция:

output = input.Replace("\t", "".PadRight(N, (char)" "));

Очевидно, N должен быть определен где-нибудь, быть этим ввод данных пользователем или в другом месте в программе.

-1
ответ дан 3 December 2019 в 04:14
поделиться

Я не действительно уверен, под чем Вы подразумеваете, "Я не могу принять, сколько пробелов вкладка должна охватить", но этот пример заменит вкладки любым количеством пробелов, которые Вы указываете.

public static string ReplaceTabs(string value, int numSpaces)
{
   string spaces = new String(' ', numSpaces);
   return value.Replace("\t", spaces);     
}
-1
ответ дан 3 December 2019 в 04:14
поделиться
Regex.Replace(input, "\t", "    ");
-1
ответ дан 3 December 2019 в 04:14
поделиться

Я думаю, что все покрыли его, но символ табуляции - просто это. Один символ... Символ представлен \t. Каждое приложение может принять решение отобразить его с одним пространством, двумя пробелами, четырьмя пробелами, смайликом.Без разницы... Так... нет никакого реального ответа на это.

-1
ответ дан 3 December 2019 в 04:14
поделиться

Это именно то, о чем они говорят. Я написал это еще в Visual Basic 6.0 . Я сделал несколько быстрых обновлений VB.NET 2010, но можно было бы исправить это лучше. Просто убедитесь и установите желаемую ширину табуляции; там установлено 8. Просто отправьте ему строку или даже исправьте их прямо в текстовом поле, например:

RichTextBox1.Text = strFixTab(RichTextBox1.Text)

Function strFixTab(ByVal TheStr As String) As String
    Dim c As Integer
    Dim i As Integer
    Dim T As Integer
    Dim RetStr As String
    Dim ch As String
    Dim TabWidth as Integer = 8    ' Set the desired tab width

    c = 1
    For i = 1 To TheStr.Length
        ch = Mid(TheStr, i, 1)
        If ch = vbTab Then
            T = (TabWidth + 1) - (c Mod TabWidth)
            If T = TabWidth + 1 Then T = 1
            RetStr &= Space(T)
            c += T - 1
        Else
            RetStr &= ch
        End If
        If ch = vbCr Or ch = vbLf Then
            c = 1
        Else
            c += 1
        End If
    Next
    Return RetStr
End Function
1
ответ дан 3 December 2019 в 04:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: