Модули работы со строками и не только.
Модератор: Модераторы
Модули работы со строками и не только.
Мне надо вытащить подстроку из строки, разграниченную символами"(" и ")".
То есть например:
input
vasya(fff)
output
fff
Какие стандартные ф-ии есть для этого? Где нибудь можно на русском почитать о ф-иях скрытых в стандартных модулях(Windows, Strings, DbCtrls и тд)?
Можно и самому такую ф-ию написать,но зачем делать её если она есть ,только скрыта в каком-то модуле.
То есть например:
input
vasya(fff)
output
fff
Какие стандартные ф-ии есть для этого? Где нибудь можно на русском почитать о ф-иях скрытых в стандартных модулях(Windows, Strings, DbCtrls и тд)?
Можно и самому такую ф-ию написать,но зачем делать её если она есть ,только скрыта в каком-то модуле.
- trius-strannik
- новенький
- Сообщения: 23
- Зарегистрирован: 11.06.2009 07:19:24
- Откуда: Томск
Ну примитивно можно так:
и всё открытыми средствами...
Добавлено спустя 1 минуту 41 секунду:
Кстати здесь нет проверки на результат, так что осторожно...
Добавлено спустя 4 минуты 21 секунду:
На всякий случай: pos('(',stroka); - определяет положение строки в подстроке;
copy(stroka,nomer1+1,nomer2-nomer1-1); - сопирует разграниченный началом и длинной фрагмент строки...
Добавлено спустя 1 минуту 12 секунд:
На всякий случай: pos('(',stroka); - определяет положение строки в подстроке;
copy(stroka,nomer1+1,nomer2-nomer1-1); - сопирует разграниченный началом и длинной фрагмент строки...
Код: Выделить всё
var stroka : string;
uchastok : string;
nomer1,nomer2 : integer;
begin
readln(stroka);
nomer1:=pos('(',stroka);
nomer2:=pos(')',stroka);
uchastok:=copy(stroka,nomer1+1,nomer2-nomer1-1);
write(uchastok);
readln
end.и всё открытыми средствами...
Добавлено спустя 1 минуту 41 секунду:
Кстати здесь нет проверки на результат, так что осторожно...
Добавлено спустя 4 минуты 21 секунду:
На всякий случай: pos('(',stroka); - определяет положение строки в подстроке;
copy(stroka,nomer1+1,nomer2-nomer1-1); - сопирует разграниченный началом и длинной фрагмент строки...
Добавлено спустя 1 минуту 12 секунд:
На всякий случай: pos('(',stroka); - определяет положение строки в подстроке;
copy(stroka,nomer1+1,nomer2-nomer1-1); - сопирует разграниченный началом и длинной фрагмент строки...
trius-strannik писал(а):Ну примитивно можно так:Код: Выделить всё
var stroka : string;
uchastok : string;
nomer1,nomer2 : integer;
begin
readln(stroka);
nomer1:=pos('(',stroka);
nomer2:=pos(')',stroka);
uchastok:=copy(stroka,nomer1+1,nomer2-nomer1-1);
write(uchastok);
readln
end.
и всё открытыми средствами...
Добавлено спустя 1 минуту 41 секунду:
Кстати здесь нет проверки на результат, так что осторожно...
Добавлено спустя 4 минуты 21 секунду:
На всякий случай: pos('(',stroka); - определяет положение строки в подстроке;
copy(stroka,nomer1+1,nomer2-nomer1-1); - сопирует разграниченный началом и длинной фрагмент строки...
Добавлено спустя 1 минуту 12 секунд:
На всякий случай: pos('(',stroka); - определяет положение строки в подстроке;
copy(stroka,nomer1+1,nomer2-nomer1-1); - сопирует разграниченный началом и длинной фрагмент строки...
это я знаю. Удивительно что нет описание модулей на русском нигде.
- trius-strannik
- новенький
- Сообщения: 23
- Зарегистрирован: 11.06.2009 07:19:24
- Откуда: Томск
Тогда извеняй, это тебе прямиком в переводчик, глядишь и ещё кому поможешь... 
gen писал(а):Какие стандартные ф-ии есть для этого? Где нибудь можно на русском почитать о ф-иях скрытых в стандартных модулях(Windows, Strings, DbCtrls и тд)?
В модуле Windows объявлены API функции Windows. Почитать про них можно в MSDN. На мой скромный взгляд, информация в MSDN организована довольно тупо, и поиск по MSDN тоже туповат (гугл находит нужную мне информацию в MSDN лучше, чем сам MSDN. А все потому, что у кого-то кривые руки) но жить можно. Есть еще куча сайтов, где есть перевод на русский того, что написано в MSDN, но там все еще тупее.
В модуле StrUtils есть куча функций для работы со строками. Почитать можно в справке по Delphi. И в гугле. Тупо: открыл модуль, взял первую функцию, вбил название в гугл, прочитал, понял. И так пока не найдешь что надо.
В модуле FileUtils (кажется) есть куча функций по конвертации из одной кодировки в другую.
-
aleksander
- незнакомец
- Сообщения: 3
- Зарегистрирован: 22.10.2009 19:44:12
Подскажите пожалуйста как слово строки(разделенное пробелами)записать в масив строк
1 слово строки - 1-й елемент
2 слово строки - 2-й елемент
и т.д.
1 слово строки - 1-й елемент
2 слово строки - 2-й елемент
и т.д.
C помощью функции StringReplace заменить все пробелы на #10, потом строку запихать в объект TStringList... TStringList не совсем массов, но смысл тот же и обращаться можно как к массиву.
2aleksander
почти все твое задание
. Допили, где нужно.
Код: Выделить всё
program project1;
uses
SysUtils;
const
Alpha=['A'..'Z','a'..'z','0'..'9'];
MAXWORDS = 100;
var
str,tmp: string;
L, i, j, wc, ac, AL, wl: integer;
isWord: Boolean;
words: array[1..MAXWORDS] of string;
begin
// writeln('Enter string...');
// readln(str);
str := ' dddd DDsSW wewew WEDWDW dsdsdsss,ddd www';
writeln(str);
L := Length(str);
SetLength(tmp, L);
FillChar(tmp[1],L,' ');
ac := 0; //Всего Alpha-символов
wc := 0; //Всего слов
wl := 0; //Длина последнего слова
j := 0; //Индекс во временной строке
isWord := False; // последний проверенный символ принадлежал слову
for i := 1 to L do
if str[i] in Alpha then
begin
ac := ac + 1;
wl := wl + 1;
isWord := True;
j := j + 1;
tmp[j] := str[i];
end
else
if isWord then
begin
wc := wc + 1;
j := j + 1;
words[wc] := copy(tmp, j - wl, wl);
wl := 0;
tmp[j] := ' ';
isWord := False;
end;
if isWord then
begin
wc := wc + 1;
words[wc] := copy(tmp, j - wl, wl);
end;
tmp := Copy(tmp,1,j);
AL := Round(ac/wc);
writeln(tmp, ' ', AL, ' ');
readln;
end.
почти все твое задание
