Сокращение значения строковой переменной
#1
Отправлено 12 января 2007 - 09:40
Например у меня есть переменная: string sPageSize, которая после функции GetText () имеет значение "Cropped Page Size:519.01 Points x 657.00 Points", а мне для сравнения нужно значение "519.0 x 657.0 pt". Какой код для этого должен быть? Помогите пожалуйста!
#2
Отправлено 12 января 2007 - 09:53
ну или как вариант:
[ ] string s = "Cropped Page Size:519.01 Points x 657.00 Points" [ ] [ ] Print("{Left (GetField(s, ":", 2), 5)} x {Left(GetField(s, " x ", 2), 5)} pt")
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#3
Отправлено 12 января 2007 - 10:05
#4
Отправлено 12 января 2007 - 10:09
если же надо, чтобы нормально обрабатывались строки типа
"Cropped Page Size:519.01 Points x 657.00 Points"
"Cropped Page Size:1519.01 Points x 2657.00 Points"
"Cropped Page Size:19.01 Points x 57.00 Points"
то надо писать типа такого:
Print("{SubStr (GetField(GetField(s, ":", 2), " ", 1), 1, Len(GetField(GetField(s, ":", 2), " ", 1))-1)} x {SubStr(GetField(GetField(s, " x ", 2), " ", 1), 1, Len(GetField(GetField(s, " x ", 2), " ", 1))-1)} pt")
во ужас, правда? =)
а вот если после точки там не всегда 2 знака, а может быть один, то будет еще хуже
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#5
Отправлено 12 января 2007 - 10:20
#6
Отправлено 12 января 2007 - 10:24
#7
Отправлено 12 января 2007 - 10:30
Print("{GetField(GetField(GetField(s, ":", 2), " ", 1), ".", 1)},{SubStr(GetField(GetField(GetField(s, ":", 2), " ", 1), ".", 2), 1, 1)} x {GetField (GetField(GetField(s, " x ", 2), " ", 1), ".", 1)},{SubStr(GetField (GetField(GetField(s, " x ", 2), " ", 1), ".", 2), 1, 1)} pt")
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#8
Отправлено 12 января 2007 - 10:44
#9
Отправлено 12 января 2007 - 10:47
"Cropped Page Size:[nnnn] Points x [nnnn] Points"
и при этом просто нужно убрать пару-тройку слов, то это можно сделать заменой подстрок "Cropped Page Size:" и "Points" на пустые строки. То есть в итоге имеем:
Print( Trim( StrTran( StrTran( s , "Points" , "" ) , "Cropped Page Size:" , "" ) ) + " pt" )
Такая конструкция все-таки попроще
#10
Отправлено 12 января 2007 - 10:50
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#11
Отправлено 12 января 2007 - 10:54
#12
Отправлено 12 января 2007 - 11:28
#13
Отправлено 12 января 2007 - 12:38
[code=auto:0]
Trim( StrTran( StrTran( StrTran( s , "Points" , "" ) , "Cropped Page Size:" , "" ) , " x" , "" ) )
[code=auto:0]
Или вообще воспользоваться 2-мя вызовами GetField, чтобы вытянуть оба числа. Как минимум такая реализация читается легче. Ну уж по-крайней мере это будет куда понятнее тех "уродцев", что мы тут накидали
#14
Отправлено 12 января 2007 - 13:48
Print ("{SubStr(sPDFPPageSizePoints, 19, 3)},{SubStr(sPDFPPageSizePoints, 23, 1)} x {SubStr(sPDFPPageSizePoints, 35, 3)},{SubStr(sPDFPPageSizePoints, 39, 1)} pt")
Всем большое спасибо за помощь
#15
Отправлено 12 января 2007 - 13:52
#16
Отправлено 12 января 2007 - 17:50
#17
Отправлено 19 января 2007 - 13:36
или наоборот сверхбольших (но это ИМХО маловероятное событие, тем более, что там 2 ноля в конце чисел. Хотя может если А2 попадется )
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных