Работа со строками
#1
Отправлено 13 ноября 2007 - 08:44
2. С++
Есть две строки. Нужно проверить условие, содержит ли вторая строка первую. Т.е. есть 1-ая строка "ааа" и 2-ая "ааа ррр ссс".
Надо вернуть true (1) если 2-ая строка содержит первую и false (0) если нет.
#2
Отправлено 13 ноября 2007 - 08:48
Ну а сделать так, чтобы возвращаемым результатом было true или false - сами думаю догадаетесь.
Так же, но уже с регулярными выражениями можно использовать match(http://msdn2.microso...y/7df7sf4x.aspx) или search( http://msdn2.microso...y/tbc7a78k.aspx ).
#3
Отправлено 13 ноября 2007 - 09:35
function TextPosDemo()
{
var aString="Per aspera ad astra";
var aSubString="astra";
var findpos;
findpos=aString["indexOf"](aSubString)
Log["Message"]("A substring '" + aSubString + "' was found at position " + findpos);
}
#4
Отправлено 13 ноября 2007 - 09:51
// 1st example function test1() { var s1 = "ааа"; var s2 = "ааа ррр ссс"; if(s2.match(s1) == null) { Log["Error"]("s2 doesn't contain s1"); } } // 2nd example function test2() { var s1 = "ааа"; var s2 = "ааа ррр ссс"; if(s2.search(s1) == -1) { Log["Error"]("s2 doesn't contain s1"); } }
TestComplete для начинающих (видеозаписи курса)
Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)
Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest
#5
Отправлено 01 февраля 2008 - 15:39
тоесть мне нужно что бы "а"="А"
Все наведенные выше ф-и разлечают регистр. :(((
Может кто знает такое?
Заранее спасибо :)
#6
Отправлено 01 февраля 2008 - 15:50
// C++Script, C#Script function Test() { var str1 = "Aaa"; var str2 = "aaA bbb ccc"; if (StrContains(str1, str2, false)) Log["Message"]("\"" + str2 + "\" contains \"" + str1 + "\"") else Log["Error"]("\"" + str2 + "\" does not contain \"" + str1 + "\""); }
#7
Отправлено 01 февраля 2008 - 16:05
В TC начиная с версии 6.10 есть функция BuiltIn.StrContains(SubStr, Str, CaseSensitive). Она возвращает True, если подстрока найдена и False - Если не найдена. В зависимости от последнего параметра поиск может быть чувствительным к регистру (True) или нечувствительным (False). Вот пример использования:
// C++Script, C#Script function Test() { var str1 = "Aaa"; var str2 = "aaA bbb ccc"; if (StrContains(str1, str2, false)) Log["Message"]("\"" + str2 + "\" contains \"" + str1 + "\"") else Log["Error"]("\"" + str2 + "\" does not contain \"" + str1 + "\""); }
У меня в компании на 6-й коплит миграция не скоро произойдет :))
Имеется в наличии только 5.14, есть ли в нем что-то подобное?
#8
Отправлено 01 февраля 2008 - 17:05
1) напишите метод на C#, который ищет в строке подстроку без учёта регистра (код могу написать)
2) сделайте сборку (опять же, могу и это сделать)
3) подключите сборку к TC
#9
Отправлено 01 февраля 2008 - 17:47
Используйте старую добрую indexOf. А чтобы избавиться от регистра -- приводите обе строки к, например, нижнему регистру с помощью toLowerCase.
var str1 = "Test"; var str2 = "ES"; var res = (str1.toLowerCase().indexOf(str2.toLowerCase()) < 0 ? false : true); Log.Message(res);
Дмитрий
#10
Отправлено 01 февраля 2008 - 18:16
function Test() { var str = "aaA bbb"; var re = new RegExp("Aaa", "i"); // Create a case-insensitive pattern // or -- // var re = /Aaa/i; var pos = str.search(re); if (pos >= 0) Log.Message("Substring found at position " + pos) else Log.Error("Substring was not found"); }
С кириллицей тоже должно работать.
#11
Отправлено 04 февраля 2008 - 08:19
#12
Отправлено 20 марта 2008 - 13:56
Utilities.CompareText(Str1, Str2)
Parameters
Str1 [in] Required String
Str2 [in] Required String
Result Integer
Она не чувствительна к регистру в отличии от
Utilities.CompareStr
#13
Отправлено 20 марта 2008 - 14:20
Эта функция осуществляет сравнение 2 строк. Для поиска одной строки в другой она не подойдет. К тому же, при работе с кириллицей CompareText все-таки учитывает регистр.Старнно что не вспомнили пор функцию которая есть в пятой версии TestComplete, а именно:
Utilities.CompareText(Str1, Str2)
Parameters
Str1 [in] Required String
Str2 [in] Required String
Result Integer
Она не чувствительна к регистру в отличии от
Utilities.CompareStr
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных