У меня есть программное обеспечение VB .NET, которое взаимодействует с нагрузкой старых (но звуковых) COM-объектов. VB предоставляет графический интерфейс для COM-объектов, часть которых состоит из установки различных параметров для COM-объектов, некоторые из которых относятся к форматированию строк.Преобразование форматирования C++ printf в/из форматирования строки VB .NET
У меня есть простая пара функций VB .NET, которые преобразуют базовые форматы% f,% d,% g в/из .NET-эквивалентов, используя большой случай выбора, охватывающий определенные общие строки, но они не охватывают все форматы , Это та вещь, у меня есть ...
ElseIf f = "%.3f" Then
return "0.000"
ElseIf f = "%.2f" Then
return "0.00"
ElseIf f = "%.1f" Then
return "0.0"
Перед тем, как начать нырять в и делают его более универсальным с некоторым разбором, знает ли кто из класса (например, VB или C# .NET), которая обеспечивает достойную готовая реализация? Или, может быть, можно использовать некоторое regexp wizadry?
Большое спасибо
Tim
Интерфейс .NET UI предоставляет раскрывающееся меню общих форматов и пытается выбрать тот, который наилучшим образом соответствует формату printf в базовом COM-объекте (для этого приведен код выше). Однако, если ни один из совпадений, я хотел бы показать пользователю нечто иное, кроме строки формата C++, и для этого требуется преобразование в/из формата, показанного пользователю. Я думал, что строка формата .NET будет в порядке, чтобы показать пользователю, хотя, возможно, есть лучшее решение? – ttt
Ну, вы можете сделать это больше похоже на Microsoft Excel, где, когда вы поднимаете диалог форматирования чисел, вы можете сначала выбрать между General/Scientific/Percent/etc (например, '% f','% e' и т. Д.), А затем ввести количество знаков после запятой (что также соответствует строке формата формата printf). Это определенно более удобно для пользователя, чем строка формата printf, и, вероятно, более сложная, чем строка формата .NET. Сколько пользователей будет знать разницу между '0,00',' # .00' и '0.0 #'? –