VBScript: Что самый простой путь состоит в том, чтобы отформатировать строку?

Я думаю, что Вы могли бы посмотреть на:

Осень

Storm

5
задан Paxenos 3 December 2009 в 15:44
поделиться

3 ответа

Replace (strFormat, "{0}", value1)

На основании фрагмента кода, я предполагаю, что вы верите, что Replace mutates strFormat напрямую. Так не работает; Вы назначаете результат исходной переменной следующим образом:

strFormat = Replace (strFormat, "{0}", value1)

Вы также можете назначить другую переменную для хранения измененных результатов, например:

strFormat2 = Replace (strFormat, "{0}", value1)
9
ответ дан 18 December 2019 в 06:50
поделиться

Почему нет? Этот код работает здесь:

value1 = "1"
value2 = "2"

strFormat = "Value1 is {0} and Value2 is {1}."
strFormat = Replace (strFormat, "{0}", value1)  
strFormat = Replace (strFormat, "{1}", value2)

MsgBox strFormat

Обратите внимание, что я обновляю свое значение strFormat для каждой замены.

Если вам нужна более гибкая реализация, вы можете использовать регулярное выражение, но сейчас это не требуется .

0
ответ дан 18 December 2019 в 06:50
поделиться

Вот небольшая симпатичная функция, которая работает наподобие функции .NET string.Format. Я сделал это быстро, поэтому добавление обработки ошибок зависит от вас. Я сделал это в VB6 и добавил ссылку на Microsoft VBScript Regular Expressions 5.5

Public Function StringFormat(ByVal SourceString As String, ParamArray Arguments() As Variant) As String
   Dim objRegEx As RegExp  ' regular expression object
   Dim objMatch As Match   ' regular expression match object
   Dim strReturn As String ' the string that will be returned

   Set objRegEx = New RegExp
   objRegEx.Global = True
   objRegEx.Pattern = "(\{)(\d)(\})"

   strReturn = SourceString
   For Each objMatch In objRegEx.Execute(SourceString)
      strReturn = Replace(strReturn, objMatch.Value, Arguments(CInt(objMatch.SubMatches(1))))
   Next objMatch

   StringFormat = strReturn

End Function

Пример:

StringFormat ("Здравствуйте, {0}. Я хочу, чтобы вы познакомились с {1}. Они оба работают для { 2}. {0} проработал на {2} 15 лет. "," Брюс "," Крис "," Кайл ")

Возвращает:

Привет, Брюс. Я хочу, чтобы вы познакомились с Крисом. Они оба работают на Кайла. Брюс проработал на Кайла 15 лет.

0
ответ дан 18 December 2019 в 06:50
поделиться
Другие вопросы по тегам:

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