Функция библиотеки write
обрабатывает ввод только от 0 до 180, что означает, что при серво 270 градусов 180 градусов представляют максимальное значение. Я бы порекомендовал переключиться на использование функции writeMicroseconds
, так как более понятно, с каким значением вы работаете.
write(120)
должны производить близко к углу 180 градусов.
Я не уверен, как вкладки будут читать в из текстового файла 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();
Можно использовать функцию замены:
char tabs = '\u0009';
String newLine = withTabs.Replace(tabs.ToString(), " ");
К сожалению, необходимо принять, сколько пробелов вкладка представляет. Необходимо установить это на фиксированное значение (как упомянутые четыре) или сделать его пользовательской опцией.
Самый быстрый способ сделать это-.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 позволяет мне изменять ширину символа табуляции к значению, которое подходит мне.
Я думаю, что Вы означаете говорить, требуется заменить вкладки эффективной суммой пробелов, до которых они были расширены. Первый путь, который приходит на ум, не включает регулярные выражения (и я не знаю, что эта проблема могла быть решена с ними).
N = tab_length - (current_position % tab_length)
.Вы хотите смочь преобразовать вкладку в пробелы N? Одна быстрая и грязная опция:
output = input.Replace("\t", "".PadRight(N, (char)" "));
Очевидно, N должен быть определен где-нибудь, быть этим ввод данных пользователем или в другом месте в программе.
Я не действительно уверен, под чем Вы подразумеваете, "Я не могу принять, сколько пробелов вкладка должна охватить", но этот пример заменит вкладки любым количеством пробелов, которые Вы указываете.
public static string ReplaceTabs(string value, int numSpaces)
{
string spaces = new String(' ', numSpaces);
return value.Replace("\t", spaces);
}
Я думаю, что все покрыли его, но символ табуляции - просто это. Один символ... Символ представлен \t
. Каждое приложение может принять решение отобразить его с одним пространством, двумя пробелами, четырьмя пробелами, смайликом.Без разницы... Так... нет никакого реального ответа на это.
Это именно то, о чем они говорят. Я написал это еще в 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