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

Фотография

Выделение числа из строки


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

#1 The_Vellor

The_Vellor

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

  • Members
  • Pip
  • 27 сообщений
  • Город:Россия,г.Воронеж

Отправлено 14 октября 2009 - 05:59

Добрый день!
Мучает вопрос меня - как можно выделить число из строки?Например, есть строка "Результат равен 78 процентов".Мне нужно получить число 78.
Я пробовал проходить посимвольно по строке и получать тип символа, но, к сожалению тип у всех символов есть OleStr.
Может кто-нибудь знает быстрый(по возможности) способ сделать это?
  • 0

#2 Genka

Genka

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

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


Отправлено 14 октября 2009 - 06:07

В любом языке есть функции/методы типа substr, split и т.п. вот с их помощью и можно.

Если нужен конкретный пример - указывайте, какой язык используеет
  • 0

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

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

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


#3 The_Vellor

The_Vellor

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

  • Members
  • Pip
  • 27 сообщений
  • Город:Россия,г.Воронеж

Отправлено 14 октября 2009 - 06:14

В любом языке есть функции/методы типа substr, split и т.п. вот с их помощью и можно.

Если нужен конкретный пример - указывайте, какой язык используеет



Использую C#Script.Насчёт substr знаю,что есть,но как задать элемент,с которого нужно выделять подстроку?
  • 0

#4 VitalyD

VitalyD

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

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

Отправлено 14 октября 2009 - 06:56

регулярные вырожения???

выглядит так:
/\d*/
  • 0

#5 modbear

modbear

    Специалист

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

Отправлено 14 октября 2009 - 07:45

Если Вы знаете, в каком конкретно месте в строке находится число и сколько в нем цифр, то можно выделить из исходной строки соответствующую подстроку и сконвертировать ее в число:
var str = "Результат равен 78 процентов";
var n = str["substr"](16, 2);   // "78"
n = parseInt(n);	// 78
Если точая позиция числа в строке неизвестна, то можно использовать регулярные выражения:
var str = "Результат равен 78 процентов";
var re = /\d+/; // рег. выражение для неотрицательного целого числа
var n = str["match"](re)[0];   // "78"
n = parseInt(n);	// 78

  • 0

#6 The_Vellor

The_Vellor

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

  • Members
  • Pip
  • 27 сообщений
  • Город:Россия,г.Воронеж

Отправлено 14 октября 2009 - 07:56

регулярные вырожения???

выглядит так:
/\d*/



Помогли регулярные выражения(всё же пришлось их вспоминать :acute: ). Использовал такое /\d+\,*\d+/
Данное выражение ищет и целые числа в строке и числа с плавающей запятой.
Среди методов класса aqString не нашёл подходящего для поиска подстроки в строке.
Если юзать метод aqString.SubStr,то нужно знать с какого индекса начинается число,и каким заканчивается.Вот в этом как раз у меня была проблема.
Я делал что то вроде:

var str = "Text200Text";for(var i = 0;i < aqString["GetLength"](str);i++){     if(aqObject["GetVarType"](aqString["GetChar"](i)) == 3)    //3 - это номер типа varInteger.         res += aqString["GetChar"](i);}

Но проблема в том,что метод aqObject["GetVarType"] возвращал 8(тип varOleStr).
  • 0

#7 modbear

modbear

    Специалист

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

Отправлено 14 октября 2009 - 10:18

Но проблема в том,что метод aqObject["GetVarType"] возвращал 8(тип varOleStr).

Естественно varOleStr, ведь отдельные символы ("a", "1", "+" и т.п.) тоже имеют тип "строка". Тогда уж надо было ASCII-коды проверять или пробовать конвертировать символы в числа.
  • 0

#8 curiosity

curiosity

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

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

Отправлено 23 декабря 2010 - 12:51

В любом языке есть функции/методы типа substr, split и т.п. вот с их помощью и можно.

Если нужен конкретный пример - указывайте, какой язык используеет

Подскажите, пожалуйста, как это (как можно выделить число из строки? Например, есть строка "Результат равен 78 процентов".Мне нужно получить число 78) сделать на JAVA? :help:
  • 0

#9 VitalyD

VitalyD

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

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

Отправлено 23 декабря 2010 - 14:26

Вопросы про Java правильнее задавать на форумах программистах... (тем более что в TestComplete Java нет).
Ну а в целом опять же - для таких целей и служат регулярные выражения. Используйте их.


  • 0

#10 Paulitto

Paulitto

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

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

Отправлено 23 декабря 2010 - 16:01

В хелпе TC в теме "JScript - Working With Numeric Values" есть раздел "Getting numerical values from strings"
  • 0


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

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