Перейти к содержимому

Фотография

Работа со строками


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 svsanek

svsanek

    Новый участник

  • Members
  • Pip
  • 19 сообщений
  • ФИО:Пронин Александр Сергеевич

Отправлено 13 ноября 2007 - 08:44

1. ТК 6
2. С++

Есть две строки. Нужно проверить условие, содержит ли вторая строка первую. Т.е. есть 1-ая строка "ааа" и 2-ая "ааа ррр ссс".
Надо вернуть true (1) если 2-ая строка содержит первую и false (0) если нет.
  • 0

#2 ArtemRudenko

ArtemRudenko

    Постоянный участник

  • Members
  • PipPipPip
  • 248 сообщений
  • ФИО:Руденко Артем Михайлович
  • Город:Минск


Отправлено 13 ноября 2007 - 08:48

Использовать можно indexOf. Почитать про нёё можно по следующей ссылке: http://msdn2.microso...y/53xtt423.aspx
Ну а сделать так, чтобы возвращаемым результатом было true или false - сами думаю догадаетесь.

Так же, но уже с регулярными выражениями можно использовать match(http://msdn2.microso...y/7df7sf4x.aspx) или search( http://msdn2.microso...y/tbc7a78k.aspx ).
  • 0
И всё-таки она вертится...

#3 Rifle

Rifle

    Новый участник

  • Members
  • Pip
  • 37 сообщений
  • ФИО:Vitaliy
  • Город:Kyiv

Отправлено 13 ноября 2007 - 09:35

Привер из help TestComplete
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);
}
  • 0

#4 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 13 ноября 2007 - 09:51

Ну и я вставлю свои 2 раза по 5 копеек =)

// 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");
  }
}

  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#5 tom_13

tom_13

    Постоянный участник

  • Members
  • PipPipPip
  • 206 сообщений
  • Город:Киев

Отправлено 01 февраля 2008 - 15:39

У меня похожая проблема, только усложняется тем, что сравнение должно быть НЕ чувствительным к регистру.

тоесть мне нужно что бы "а"="А"

Все наведенные выше ф-и разлечают регистр. :(((

Может кто знает такое?

Заранее спасибо :)
  • 0

#6 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 01 февраля 2008 - 15:50

В 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 + "\"");
}

  • 0

#7 tom_13

tom_13

    Постоянный участник

  • Members
  • PipPipPip
  • 206 сообщений
  • Город:Киев

Отправлено 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, есть ли в нем что-то подобное?
  • 0

#8 AlexP

AlexP

    Опытный участник

  • Members
  • PipPipPipPip
  • 406 сообщений
  • Город:Санкт-Петербург

Отправлено 01 февраля 2008 - 17:05

Вариант такой:
1) напишите метод на C#, который ищет в строке подстроку без учёта регистра (код могу написать)
2) сделайте сборку (опять же, могу и это сделать)
3) подключите сборку к TC
  • 0

#9 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 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);

  • 0
С уважением,
Дмитрий

#10 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 01 февраля 2008 - 18:16

Попробуйте использовать регулярное выражение с ключом /i (ignore case):

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");
}

С кириллицей тоже должно работать.
  • 0

#11 tom_13

tom_13

    Постоянный участник

  • Members
  • PipPipPip
  • 206 сообщений
  • Город:Киев

Отправлено 04 февраля 2008 - 08:19

Всем спасибо за ответы, работает:))) При чем обе фун-ии , теперь думаю какая больше ляжет под мой проект :)
  • 0

#12 Hedgehog

Hedgehog

    Новый участник

  • Members
  • Pip
  • 14 сообщений

Отправлено 20 марта 2008 - 13:56

Старнно что не вспомнили пор функцию которая есть в пятой версии TestComplete, а именно:

Utilities.CompareText(Str1, Str2)
Parameters
Str1 [in] Required String
Str2 [in] Required String
Result Integer

Она не чувствительна к регистру в отличии от
Utilities.CompareStr
  • 0

#13 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 20 марта 2008 - 14:20

Старнно что не вспомнили пор функцию которая есть в пятой версии TestComplete, а именно:

Utilities.CompareText(Str1, Str2)
Parameters
Str1 [in] Required String
Str2 [in] Required String
Result Integer

Она не чувствительна к регистру в отличии от
Utilities.CompareStr

Эта функция осуществляет сравнение 2 строк. Для поиска одной строки в другой она не подойдет. К тому же, при работе с кириллицей CompareText все-таки учитывает регистр.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных