StringReplace — Функция Delphi


StringReplace — Функция Delphi

Данная функция позволяет легко произвести замену одной подстроки на другую.
В качестве входных данных функции необходимо передать исходную строку, заменяемую подстроку и строку, на которую будет произведена замена. В результате функция возвращает строку с замененными вхождениями подстроки.

[cc lang=’delphi’]function ReplaceString(const source, subStrFrom, subStrTo: string): string;
// — source — исходная строка
// — subStrFrom — подстрока, подлежащая замене
// — subStrTo — подстрока, которой будут заменены вхождения подстроки str1
var
a, b: Integer;
begin
Result := source;
b := Length(subStrFrom);
repeat
a := Pos(subStrFrom, Result); // находим позицию подстроки subStrFrom
if a > 0 then
begin
Delete(Result, a, b); // удаляем найденную подстроку subStrFrom
Insert(subStrTo, Result, a); // вставляем подстроку subStrTo
end;
until a = 0;
end;[/cc]
Пример работы с функцией:
[cc lang=’delphi’]procedure TForm1.Button1Click(Sender: TObject);
begin
memo2.Text:=Memo1.Text;
memo2.Text:=ReplaceString(memo2.Text,Edit1.Text,Edit2.Text)
end;[/cc]
Результат работы функции:

ASD-SOFT

Программирование. Теория и практика.

TStringHelper — помощник при работе с типом String в Delphi.

Здравствуйте уважаемые коллеги!
TStringHelper, как и помощники в общем, появились в Delphi начиная с версии XE3. Ниже приведено описание и примеры использования методов и свойств помощника TStringHelper.

Empty

Возвращает пустую строку.

Create(C: Char; Count: Integer)

Создает строку из символов C количеством Count;

Create(const Value: array of Char)

Создает строку из переданного массива символов Value.

Create(const Value: array of Char; StartIndex: Integer; Length: Integer)

Создает строку из массива символов Value начиная с позиции StartIndex количеством Length символов.

Compare(const StrA: string; const StrB: string)

Сравнение двух строк StrA и StrB с учетом регистра. Если StrA StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

Compare(const StrA: string; const StrB: string; IgnoreCase: Boolean)

Сравнение двух строк StrA и StrB с учетом, IgnoreCase установле в False, или без учета регистра, IgnoreCase установлен в True. Если StrA StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

Compare(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer)

Сравнить строку StrA, начиная с символа IndexA со строкой StrB, начиная с символа IndexB в количестве Length символов с учетом регистра. Если StrA StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

Compare(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer; IgnoreCase: Boolean)

Сравнить строку StrA, начиная с символа IndexA со строкой StrB, начиная с символа IndexB в количестве Length символов. С учетом, IgnoreCase устанавливается в False, или без учета регистра, IgnoreCase устанавливается в True. Если StrA StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

CompareOrdinal(const strA: string; const strB: string)

Сравнивает строку StrA со строкой StrB по кодам символов.

CompareOrdinal(const strA: string; indexA: Integer; const strB: string; indexB: Integer; length: Integer)

Сравнивает по кодам символов строку StrA, начиная с символа IndexA со строкой StrB, начиная с символа IndexB в количестве Length символов.

CompareTo(const strB: string)

Сравнивает текущую строку со строкой StrB. Если Текущая строка StrB, то возвращает положительное значение, если строки равны, то возвращает 0.

Contains(const Value: string)

Если текущая строка содержит строку Value, то вернет True иначе False. Учитывается регистр.

Copy(const Str: string)

Возвращает строку Str.

CopyTo(SourceIndex: Integer; var destination: array of Char; DestinationIndex: Integer; Count: Integer)

Копирует текущую строку, начиная с символа SourceIndex в массив символов destination, начиная с DestinationIndex в количестве Count символов.

EndsText(const ASubText, AText: string)

Сравнивает окончание строки AText со строкой ASubText. При совпадении возвращает True.

EndsWith(const Value: string)

Сравнивает окончание текущей строки со строкой Value с учетом регистра. При совпадении возвращает True.

EndsWith(const Value: string; IgnoreCase: Boolean)

Сравнивает окончание текущей строки со строкой Value. IgnoreCase = True — без учета регистра, IgnoreCase = False — с учетом регистра. При совпадении возвращает True.

Equals(const Value: string)

Сравнивает текущую строку со строкой Value с учетом регистра. При совпадении возвращает True.

Equals(const a: string; const b: string)

Сравнивает строку a со строкой b с учетом регистра. При совпадении возвращает True.

Format(const Format: string; const args: array of const)

Подставляет значения в форматированную строку Format из массива args.

GetHashCode

В данный момент не работает. Возвращает -1.

IndexOf(value: Char)

Возвращает позицию символа value в текущей строке. Если символ не найден, вернет -1;

IndexOf(const Value: string)

Возвращает позицию совпадения строки Value с текущей строкой. Если строка не найдена, вернет -1.

IndexOf(Value: Char; StartIndex: Integer)

Возвращает позицию символа value в текущей строке, начиная с позиции StartIndex. Если символ не найден, вернет -1;

IndexOf(const Value: string; StartIndex: Integer)

Возвращает позицию совпадения строки Value с текущей строкой, начиная с позиции StartIndex. Если строка не найдена, вернет -1.

IndexOf(Value: Char; StartIndex: Integer; Count: Integer)

Возвращает позицию символа value в текущей строке, начиная с позиции StartIndex. Сравнивает Count сиволов. Если символ не найден, вернет -1.

IndexOf(const Value: string; StartIndex: Integer; Count: Integer)

Возвращает позицию совпадения строки Value с текущей строкой, начиная с позиции StartIndex, включая Count символов. Если строка не найдена, вернет -1.

IndexOfAny(const AnyOf: array of Char)

Возвращает позицию совпадения любого из массива AnyOf в текущей строке. Если ни один символ не найден, то вернет -1.

IndexOfAny(const AnyOf: array of Char; StartIndex: Integer)

Возвращает позицию совпадения любого из массива AnyOf в текущей строке, начиная с позиции StartIndex. Если ни один символ не найден, то вернет -1.

IndexOfAny(const AnyOf: array of Char; StartIndex: Integer; Count: Integer)

Возвращает позицию совпадения любого символа из массива AnyOf в текущей строке, начиная с позиции StartIndex, проверяя Count символов. Если ни один символ не найден, то вернет -1.

Insert(StartIndex: Integer; const Value: string)

Вставляет строку Value в текущую строку начиная с позиции StartIndex.

IsDelimiter(const Delimiters: string; Index: Integer)

Проверяет: присутствует ли текущая строка в строке Delimiters начиная с позиции Index.

IsEmpty

Возвращает True, если Текущая строка пустая.

IsNullOrEmpty(const Value: string)

Возвращает True, если строка Value пустая.

IsNullOrWhiteSpace(const Value: string)

Не работает. Возвращает False.

Join(const Separator: string; const values: array of const)

Не работает. Возвращает пустую строку.

Join(const Separator: string; const Values: array of string)

Объединяет значения из массива Values в строку используя разделитель Separator.

Join(const Separator: string; const Values: IEnumerable )

Не работает. Возвращает пустую строку.

Join(const Separator: string; const value: array of string; StartIndex: Integer; Count: Integer)

Объединяет значения из массива Values, начиная с позиции StartIndex количеством Count в строку используя разделитель Separator.

LastDelimiter(const Delims: string)

Возвращает последнюю совпавшую позицию строки Delims с текущей строкой. Если совпадений не найдено, то вернет -1.

LastIndexOf(Value: Char)

Возвращает последнюю позицию символа Value в текущей строке. Если совпадений не найдено, то вернет -1.

LastIndexOf(const Value: string)

Возвращает последнюю позицию совпадения строки Value с текущей строкой. Если строка не найдена, вернет -1.

LastIndexOf(Value: Char; StartIndex: Integer)

Возвращает последнюю позицию символа Value в текущей строке, сравнивает с начала и до позиции StartIndex. Если совпадений не найдено, то вернет -1.

LastIndexOf(const Value: string; StartIndex: Integer)

Возвращает последнюю позицию совпадения строки Value в текущей строке, сравнивает с начала и до позиции StartIndex. Если строка не найдена, вернет -1.

LastIndexOf(Value: Char; StartIndex: Integer; Count: Integer)

Возвращает последнюю позицию символа Value в текущей строке, сравнивает с начала и до позиции StartIndex, проверяя Count символов. Если совпадений не найдено, то вернет -1.

LastIndexOf(const Value: string; StartIndex: Integer; Count: Integer)

Возвращает последнюю позицию строки Value в текущей строке, сравнивает с начала и до позиции StartIndex, проверяя Count символов. Если совпадений не найдено, то вернет -1.

LastIndexOfAny(const AnyOf: array of Char)

Возвращает последнюю позицию любого найденного символа из массива AnyOf в текущей строке. Если совпадений не найдено, то вернет -1.

LastIndexOfAny(const AnyOf: array of Char; StartIndex: Integer)

Возвращает последнюю позицию любого найденного символа из массива AnyOf в текущей строке до позиции StartIndex. Если совпадений не найдено, то вернет -1.

LastIndexOfAny(const AnyOf: array of Char; StartIndex: Integer; Count: Integer)

Возвращает последнюю позицию любого найденного символа из массива AnyOf, начиная с позиции StartIndex, проверяя Count символов. Если совпадений не найдено, то вернет -1.

PadLeft(TotalW >Дополняет текущую строку пробелами до длинны TotalWidth слева.
PadLeft(TotalW >Дополняет текущую строку символами PaddingChar до длинны TotalWidth слева.
PadRight(TotalW >Дополняет текущую строку пробелами до длинны TotalWidth справа.
PadRight(TotalW >Дополняет текущую строку символами PaddingChar до длинны TotalWidth справа.
Remove(StartIndex: Integer)

Удаляет символы из текущей строки начиная с позиции StartIndex и до конца.

Remove(StartIndex: Integer; Count: Integer)

Удаляет Count символов из текущей строки начиная с позиции StartIndex.

Replace(OldChar: Char; NewChar: Char)

Заменяет все символы OldChar в текущей строке на симвопл NewChar.

Replace(OldChar: Char; NewChar: Char; ReplaceFlags: TReplaceFlags)

Заменяет символы OldChar в текущей строке на симвопл NewChar, используя насройки ReplaceFlags: rfReplaceAll — заменить все найденные; rfIgnoreCase — игнорировать регистр.

Replace(const OldValue: string; const NewValue: string)

Заменяет все совпадения со строкой OldValue в текущей строке на строку NewValue.

Replace(const OldValue: string; const NewValue: string; ReplaceFlags: TReplaceFlags)

Заменяет все совпадения со строкой OldValue в текущей строке на строку NewValue, используя насройки ReplaceFlags: rfReplaceAll — заменить все найденные; rfIgnoreCase — игнорировать регистр.

Split(const Separator: array of Char)

Разделяет текущую строку на массив строк TArray используя в качетсве разделителей символы из массива Separator.

Split(const Separator: array of Char; Count: Integer)

Разделяет текущую строку на массив строк TArray количеством Count, используя в качетсве разделителей символы из массива Separator.

Split(const Separator: array of Char; Options: TStringSplitOptions)

Разделяет текущую строку на массив строк TArray используя в качетсве разделителей символы из массива Separator. Options — условия разделения: None и ExcludeEmpty — исключать пустые.

Split(const Separator: array of string; Options: TStringSplitOptions)

Разделяет текущую строку на массив строк TArray используя в качетсве разделителей строки из массива Separator. Options — условия разделения: None и ExcludeEmpty — исключать пустые.

Split(const Separator: array of Char; Count: Integer; Options: TStringSplitOptions)

Разделяет текущую строку на массив строк TArray количеством Count, используя в качетсве разделителей символы из массива Separator. Options — условия разделения: None и ExcludeEmpty — исключать пустые.

Split(const Separator: array of string; Count: Integer; Options: TStringSplitOptions)

Разделяет текущую строку на массив строк TArray используя в качетсве разделителей строки из массива Separator. Options — условия разделения: None и ExcludeEmpty — исключать пустые.

StartsWith(const Value: string)

Сравнивает начало текущей строки со строкой Value. Возвращает True при совпадении.

StartsWith(const Value: string; IgnoreCase: Boolean)

Сравнивает начало текущей строки со строкой Value. С учетом регистра при IgnoreCase = False, и без учета при IgnoreCase = True. Возвращает True при совпадении.

Substring(StartIndex: Integer)

Возвращает часть текущей строки начиная с позиции StartIndex и до конца.

Substring(StartIndex: Integer; Length: Integer)

Возвращает часть текущей строки начиная с позиции StartIndex, количеством Length символов.

ToCharArray

Преобразует текущую строку в массив символов TArray .

ToCharArray(StartIndex: Integer; Length: Integer)

Преобразует текущую строку, начиная с позиции StartIndex, количеством Length в массив символов TArray .

ToLower

Переводит все символы текущей строки в нижний регистр.

ToLowerInvariant

Переводит все символы текущей строки в нижний регистр используя UTF-16.

ToUpper

Переводит все символы текущей строки в верхний регистр.

ToUpperInvariant

Переводит все символы текущей строки в верхний регистр используя UTF-16.

Trim

Удаляет пробелы из начала и конца текущей строки.

Trim(const TrimChars: array of Char)

Удаляет символы, указанные в массиве TrimChars из начала и конца текущей строки.

TrimEnd(const TrimChars: array of Char)

Удаляет символы, указанные в массиве TrimChars из конца текущей строки.

TrimStart(const TrimChars: array of Char)

Удаляет символы, указанные в массиве TrimChars из начала текущей строки.

Chars[Index: Integer]

Свойство вернет символ с позицией Index из текущей строки.

StringReplace — Функция Delphi

Подскажите пожалуйста существует ли аналог функции StringReplace, которая находила бы подстроку в строке без учета регистра и заменяла бы на найденую подстроку с учетом регистра + что-то свое.
Пример:
ищем слово могут и обрамляем кавычками
в строке:
Несколько клиентов могут работать над копиями проекта одновременно.
и в строке:
Несколько клиентов мОГут работать над копиями проекта одновременно.

Получаем соответственно:
Несколько клиентов «могут» работать над копиями проекта одновременно.
и
Несколько клиентов «мОГут» работать над копиями проекта одновременно.

Но в любом случае замена происходит на КОНКРЕТЫЙ фактический параметр.
т.е.

везде выполнит замену раличных написаний могут, на «могут», причем даже внутри более длинных слов.
т.е.
МОГУТ -> «могут»
МоГУт -> «могут»
смогут -> с»могут»

Delphi Recursive function replace string

I tried replace found text recursively but i cant get it working. This will replace only 1 ´a´ char before each ´text´ but i want replace all ´a´ characters before text

I need replace this: ‘aaHaaatextaaaatextHHaatextHHaaaa’

final text should looks like this: ‘aaHtexttextHHtextHHaaaa’

3 Answers 3

and use like so

Your recursive logic is wrong, not to mention more complex then it needs to be. Try this instead:

Also, you do realize that StringReplace() does not support WideString , don’t you? So you are doing a lot of unnecessary WideString-to-String-to-WideString data conversions at each step. Change OneLine() to take and return a String instead so it can continue using StringReplace() and the WideString conversions are only performed at the initial call site:

Or else re-implement OneLine() to stop using StringReplace() altogether and instead manually search-and-replace using WideString values exclusively.

StringReplace — Функция Delphi

Download QuickRTTI, there is a file called strutils.pas that lets you replace a substring..

a will become ‘What Are You?’

I think you try with strings very much and I send you some string manipulation routines.

Advanced Delphi Systems

12613 Maidens Bower Drive

Potomac, MD 20854 USA

*SysUtils, Classes, ExtCtrls, StdCtrls;

Const RunOuts >
Const RunOuts ;

Deletes all occurances of a Character in a String>

Function DeleteCharacterInString(InputCharacter,InputString : String): String;

Deletes all LineFeed Carriage Returns>

function DeleteLineBreaks(const S: string): string;

Deletes all occurances of specified substring in a String>

Function DeleteSubStringInString(substring,InputString: String): String;

Deletes all occurances of specified substring in a String and is case

Function DeleteSubStringInStringNoCase(substring,InputStrin g: String): String;

Throws away all keys except a-z and A-Z>

Procedure KeyPressOnlyAToZ(Var Key: Char);

Throws away all keys except 0-9,-,+,.>

Procedure KeyPressOnlyNumbers(Var Key: Char);

Throws away all keys except 0-9>

Procedure KeyPressOnlyNumbersAbsolute(Var Key: Char);

Returns The Length Of The String>

Function Len(InputString: String): Integer;

Returns a string converted to lower case>

Function Lower(InputString: String): String;

Throws away all characters except 0-9,-,+,.>

Function NumbersOnly(InputString: String): String;

Throws away all characters except 0-9>

Function NumbersOnlyAbsolute(InputString: String): String;

Returns the Proper form of a string, i.e., each word

starts with a capitalized letter and all subsequent

letters are lowercase>

Function Proper(S : String): String;

Replaces all occurances of a character in a string

with a new character>

Function ReplaceCharInString(S,OldChar,NewChar :String): String;

Replaces all occurances of a Character in a String>

* * * * * InputString: String): String;

Replaces all occurances of specified substring in a String. *This will have problems if

the OldSubString is Contained in the NewSubstring. *This is case sensitive.

Function ReplaceSubStringInString(OldSubString,NewSubString ,InputString: String): String;

Replaces all occurances of specified substring in a String. *This will have problems if

the OldSubString is Contained in the NewSubstring. *This is case insensitive.

Function ReplaceSwbStringInStringNoCase(OldSubString,NewSub String,InputString: String): String;

Pads or truncates a String and Justifies Left if StrJustify=True>

*StrJustify: Boolean): String;

All matches are added to the Stringlist.

*Source * * * * * * * * *: String; * //The input string

*StartTag * * * * * * * *: String; * //The start tag


*EndTag * * * * * * * * *: String; * //The end tag

*Containing * * * * * * *: String; * //A match must contain this string

*Var StringList * * * * *: TStringList; * //A List of Matches

*CaseSensitiveTags * * * : Boolean; *//True if tags are casesensitive

*CaseSensitiveContaining : Boolean * //True if Containing string is casesensitive

*): Boolean; * * * * * * * * * * * * //True if a match was found

Returns the contents of a string between two tags. *The tag

information is not returned. *Finding the tags is case sensitive.

Function String_Grep_Contents(Source, StartTag, EndTag: String): String;

This is a full featured grep function. *All data associated

with the grep operation is returned. *The substring before the

match section is stored in the BeforeString variable. *The Match

Substring is stored in two variables. *The variable MatchwithTags

stores the match substring wrapped in the Start and End Tags.

The variable MatchWithoutTags stores the match substring without

the Start and End Tags. CaseSensitivity can be toggled for both

the tags and the Containing String using the booleans

CaseSensitiveTags and CaseSensitiveContaining. For a match to be

successful it must satisfy all criteria. *If the Containing String

is null this criteria is not applied.

*Source * * * * * * * * *: String; * //The input string

*StartTag * * * * * * * *: String; * //The start tag

*EndTag * * * * * * * * *: String; * //The end tag

*Containing * * * * * * *: String; * //A match must contain this string

*Var BeforeString * * * *: String; * //The substring prior to the match

*Var MatchWithTags * * * : String; * //The match string including tags

*Var MatchWithoutTags * *: String; * //the match string without the tags

*Var AfterString * * * * : String; * //The substring after the match with tags

*CaseSensitiveTags * * * : Boolean; *//True if tags are casesensitive

*CaseSensitiveContaining : Boolean * //True if Containing string is casesensitive

*): Boolean; * * * * * * * * * * * * //True if a match was found

The String_LineFeed_Format function adjusts all line breaks in the given

string «SourceString» to be true CR/LF sequences. The function changes any

CR characters not followed by a LF and any LF characters not preceded by a

CR into CR/LF pairs. It also converts LF/CR pairs to CR/LF pairs. The LF/CR

pair is common in Unix text files.

Function String_LineFeed_Format(SourceString : String): String;

Inserts a Carriage Return/Line Feed at the index position.

Function String_LineFeed_Insert(SourceString : String; Index : Integer): String;

Replace all occurances of OldSubString with NewSubString in SourceString

*SourceString : String): String;

Replace all occurances of OldSubString with NewSubString in

SourceString ignoring case

*SourceString : String): String;

Returns a string whose values are all reversed,i.e. , the

first character is last and the last is first.

Function String_Reverse(S : String): String;

Returns a SubString of a String.

Can only handle strings up to 255 characters.>

Function SubStr(InputString: String; StartPos, StringLength: Byte): String;

Trims blank spaces from both sides of the string>

Function TrimBlanksFromEnds(InputString: String): String;

Trims blank spaces from the left of the string>

Function TrimBlanksLeft(InputString: String): String;

Trims blank spaces from the right of the string>

Function TrimBlanksRight(InputString: String): String;

Converts String To UpperCase>

Function Upper(InputString: String): String;

* *procedure ResizeShadowLabel(Sender: TObject);

*TLabel(Controls[0]).Top *:= ((PH-LH) div 2)-3;

*TLabel(Controls[0]).Left := ((Pw-Lw) div 2)-3;

Throws away all keys except 0-9,-,+,.>

* *Procedure OnlyNumbers(Sender: TObject; var Key: Char);

Throws away all keys except 0-9>

* *Procedure OnlyNumbersAbsolute(Sender: TObject; var Key: Char);

Throws away all keys except a-z and A-Z>

* *Procedure OnlyAToZ(Sender: TObject; var Key: Char);

Throws away all keys except 0-9,-,+,.>

Procedure TEditKeyFilter.OnlyNumbers(Sender: TObject; var Key: Char);

Throws away all keys except 0-9>

Procedure TEditKeyFilter.OnlyNumbersAbsolute(Sender: TObject; var Key: Char);

Throws away all keys except a-z and A-Z>

Procedure TEditKeyFilter.OnlyAToZ(Sender: TObject; var Key: Char);

Deletes all occurances of a Character in a String>

Function DeleteCharacterInString(InputCharacter,InputString : String): String;

* *If Not (CharPos = 0) Then

Deletes all LineFeed Carriage Returns>

function DeleteLineBreaks(const S: string): string;

*Source, SourceEnd: PChar;

*SourceEnd := Source + Length(S);

*while Source StrLen Then

* * *For Counter := 1 To StrLen-Length(InputStr) Do

* * * *TempFill := TempFill + FillChar;

* * *If StrJustify Then

* * * *InputStr := InputStr + TempFill;

* * * *InputStr := TempFill + InputStr ;

All matches are added to the Stringlist.

*Source * * * * * * * * *: String; * //The input string

*StartTag * * * * * * * *: String; * //The start tag

*EndTag * * * * * * * * *: String; * //The end tag

*Containing * * * * * * *: String; * //A match must contain this string

*Var StringList * * * * *: TStringList; * //A List of Matches

*CaseSensitiveTags * * * : Boolean; *//True if tags are casesensitive

*CaseSensitiveContaining : Boolean * //True if Containing string is casesensitive

*): Boolean; * * * * * * * * * * * * //True if a match was found

*BeforeString * * * *: String; * //The substring prior to the match

*MatchWithTags * * * : String; * //The match string including tags

*MatchWithoutTags * *: String; * //the match string without the tags

*AfterString * * * * : String; * //The substring after the match with tags

*BeforeString * * * *:= »; * * *//The substring prior to the match

*MatchWithTags * * * := »; * * *//The match string including tags

*MatchWithoutTags * *:= »; * * *//the match string without the tags

*AfterString * * * * := »; * * *//The substring after the match with tags

* * *S, * * * * * * * *//Source * * * * * * * * *: String; * //The input string

* * *StartTag, * * * * //StartTag * * * * * * * *: String; * //The start tag

* * *EndTag, * * * * * //EndTag * * * * * * * * *: String; * //The end tag

* * *Containing, * * * //Containing * * * * * * *: String; * //A match must contain this string

* * *BeforeString, * * //Var BeforeString * * * *: String; * //The substring prior to the match

* * *MatchWithTags, * *//Var MatchWithTags * * * : String; * //The match string including tags

* * *MatchWithoutTags, //Var MatchWithoutTags * *: String; * //the match string without the tags

* * *AfterString, * * *//Var AfterString * * * * : String; * //The substring after the match with tags

* * *CaseSensitiveTags,//CaseSensitiveTags * * * : Boolean; *//True if tags are casesensitive

* * *CaseSensitiveContaining);//CaseSensitiveContaining : Boolean * //True if Containing string is casesensitive

* * * * * * * * * * * *//): Boolean; * * * * * * * * * * * * //True if a match was found

*While FoundMatch Do

* * * *S, * * * * * * * *//Source * * * * * * * * *: String; * //The input string

* * * *StartTag, * * * * //StartTag * * * * * * * *: String; * //The start tag

* * * *EndTag, * * * * * //EndTag * * * * * * * * *: String; * //The end tag

* * * *Containing, * * * //Containing * * * * * * *: String; * //A match must contain this string

* * * *BeforeString, * * //Var BeforeString * * * *: String; * //The substring prior to the match

* * * *MatchWithTags, * *//Var MatchWithTags * * * : String; * //The match string including tags

* * * *MatchWithoutTags, //Var MatchWithoutTags * *: String; * //the match string without the tags

* * * *AfterString, * * *//Var AfterString * * * * : String; * //The substring after the match with tags

* * * *CaseSensitiveTags,//CaseSensitiveTags * * * : Boolean; *//True if tags are casesensitive

* * * *CaseSensitiveContaining);//CaseSensitiveContaining : Boolean * //True if Containing string is casesensitive

* * * * * * * * * * * * *//): Boolean; * * * * * * * * * * * * //True if a match was found

Returns the contents of a string between two tags. *The tag

information is not returned. *Finding the tags is case sensitive.

Function String_Grep_Contents(Source, StartTag, EndTag: String): String;

*Containing * * * * * * *: String; * //A match must contain this string

*BeforeString * * * * * *: String; * //The substring prior to the match

*MatchWithTags * * * * * : String; * //The match string including tags

*MatchWithoutTags * * * *: String; * //the match string without the tags

*AfterString * * * * * * : String; * //The substring after the match with tags

*CaseSensitiveTags * * * : Boolean; *//True if tags are casesensitive

*CaseSensitiveContaining : Boolean; *//True if Containing string is casesensitive

*Containing * * * * * * *:= »; * * *//A match must contain this string

*BeforeString * * * * * *:= »; * * *//The substring prior to the match

*MatchWithTags * * * * * := »; * * *//The match string including tags

*MatchWithoutTags * * * *:= »; * * *//the match string without the tags

*AfterString * * * * * * := »; * * *//The substring after the match with tags

*CaseSensitiveTags * * * := False; * //True if tags are casesensitive

*CaseSensitiveContaining := False; * //True if Containing string is casesensitive

* *Source, * * * * * * * * *//Source * * * * * * * * *: String; * //The input string

* *StartTag, * * * * * * * *//StartTag * * * * * * * *: String; * //The start tag

* *EndTag, * * * * * * * * *//EndTag * * * * * * * * *: String; * //The end tag

* *Containing, * * * * * * *//Containing * * * * * * *: String; * //A match must contain this string

* *BeforeString, * * * * * *//Var BeforeString * * * *: String; * //The substring prior to the match

* *MatchWithTags, * * * * * //Var MatchWithTags * * * : String; * //The match string including tags

* *MatchWithoutTags, * * * *//Var MatchWithoutTags * *: String; * //the match string without the tags

* *AfterString, * * * * * * //Var AfterString * * * * : String; * //The substring after the match with tags

* *CaseSensitiveTags, * * * //CaseSensitiveTags * * * : Boolean; *//True if tags are casesensitive

* *CaseSensitiveContaining *//CaseSensitiveContaining : Boolean * //True if Containing string is casesensitive

* *); * * * * * * * * * * * //): Boolean; * * * * * * * * * * * * //True if a match was found

This is a full featured grep function. *All data associated

with the grep operation is returned. *The substring before the

match section is stored in the BeforeString variable. *The Match

Substring is stored in two variables. *The variable MatchwithTags

stores the match substring wrapped in the Start and End Tags.

The variable MatchWithoutTags stores the match substring without

the Start and End Tags. CaseSensitivity can be toggled for both

the tags and the Containing String using the booleans

CaseSensitiveTags and CaseSensitiveContaining. For a match to be

successful it must satisfy all criteria. *If the Containing String

is null this criteria is not applied.

*Source * * * * * * * * *: String; * //The input string

*StartTag * * * * * * * *: String; * //The start tag

*EndTag * * * * * * * * *: String; * //The end tag

*Containing * * * * * * *: String; * //A match must contain this string

*Var BeforeString * * * *: String; * //The substring prior to the match

*Var MatchWithTags * * * : String; * //The match string including tags

*Var MatchWithoutTags * *: String; * //the match string without the tags

*Var AfterString * * * * : String; * //The substring after the match with tags

*CaseSensitiveTags * * * : Boolean; *//True if tags are casesensitive

*CaseSensitiveContaining : Boolean * //True if Containing string is casesensitive

*): Boolean; * * * * * * * * * * * * //True if a match was found

StringReplace — Функция Delphi

А вот это в корне неверный вывод. (да и вообще неверный подход к оценке эффективности кода)
Ваша программа нагрузила ЦП на 50% исключительно потому, что у Вас двухъядерный процессор. (и 32 или 64 — не важно)
А любое однопоточное приложение приложение во время своей работы грузит ЦП ровно на 1 поток (если ему не мешают другие приложения), т.е. в Вашем случае — наполовину.

И поэтому вычислительную нагрузку следует оценивать не по процентам, а по времени работы. Т.е. любой код (кроме многопоточного) нагрузит Ваш процессор на 50%, но более эффективный будет нагружать его в течение более короткого времени.

StringReplace — Функция Delphi

Заменяет фрагмент в строке.

StringReplace ( «string» , «searchstring/start» , «replacestring» [, occurrence = 0 [, casesense = 0 ]] )

string Строка, в которой выполняется замена.
searchstring/start Строка поиска или позиция символа начала замены.
replacestring Строка замены.
occurrence [необязательный] Количество выполняемых замен. Используйте отрицательное число, чтобы выполнить замену справа.
0 = выполнить замену всех найденных строк (по умолчанию)
casesense [необязательный] Флаг установки чувствительности к регистру написания.
0 = (по умолчанию) не учитывать регистр, используется локальный язык
1 = учитывать регистр
2 = не учитывать регистр, используется основное / быстрое сравнение

Возвращает новую строку, в @extended содержится число замен.

По умолчанию или при положительном occurrence поиск/замена производится слева направо. Таким образом, StringReplace(«aaa», «aa», «bb») возвращает «bba»

Если используется метод замены в указанной позиции, то параметры occurrence и casesense игнорируются. Если замена строки не может быть сохранена, то возвращается пустая строка и @error устанавливается равным 1.

; Пример 1, замена текста
$sText = StringReplace ( «это строка текста» , » » , «—» )
$iReplacements = @extended
MsgBox ( 4096 , ‘Строка после замены’ , $sText & @CRLF & @CRLF & _
‘Количество сделанных замен: ‘ & $iReplacements )

; Пример 2, замена в позиции
$sText = StringReplace ( «это строка текста» , 6 , «—» )
MsgBox ( 0 , ‘Замена в позиции’ , $sText )

StringReplace — Функция Delphi

Работа со строками Delphi позволяет извлечь из строки необходимую информацию и представить её в нужном виде. Система предоставляет весь спектр необходимых функций для работы со строками Delphi и преобразования строк Delphi в необходимые форматы:

  • числовой формат, целый и дробный с плавающей точкой;
  • формат времени, даты, даты-времени;
  • преобразование символов к верхнему или нижнему регистру;
  • сравнение строк, поиск в строке и копирование подстроки;
    и многие другие.

Непосредственно сами строки Delphi поддерживают единственную операцию, так называемую операцию конкатенации, то есть присоединения. Несмотря на «научное» название, операция конкатенации выполняет очень простую процедуру. С помощью операции конкатенации одна строка присоединяется к другой:

Результирующая строка S будет суммой двух слагаемых строк. Длина строки, то есть количество символов в строке, возвращается встроенной функцией

function Length(S: String): Integer;

Delphi работает со строками типа String, в котором длина строки записывается в начале строки, перед первым символом. Поэтому индекс первого символа в строке не 0, а 1. То есть, если:

S:=’Строка типа String’;

то S[1] — символ ‘С’, S[2] — символ ‘т’ , последний символ в строке — S[Length(S)], равный ‘g’.

Однако часто приходится иметь дело со строками типа PChar, которые использует операционая система Windows. В строках типа PChar длина строки определяется специальным символом конца строки — #0. Поэтому для использования функций Windows тип String необходимо предварительно переводить в тип PChar. Преобразование типа String в тип PChar выполняет функция

function PChar(S: String): PChar;

Для полноценной работы со строками Delphi используются следующие стандартные процедуры и функции:

Функции преобразования в числовой формат и обратно

Выполняя вычисления, используем для ввода данных и отображения результатов следующие функции, работающие со строками Delphi:

функция IntToStr(N: Integer): String
Преобразует целое число N в строку.
функция StrToInt(S: String): Integer
Преобразует строку S в целое число.
функция FloatToStr(X: Extended): String
Преобразует число с плавающей точкой X в строку.
функция StrToFloat(S: String): Extended
Преобразует строку S в число с плавающей точкой.

Процедуры и функции преобразования дат и времени

Сначала собственно функции, предоставляющие информацию о текущих дате и времени:

функция Now: TDateTime
Возвращает текущую дату и время.
функция Date: TDateTime
Возвращает текущую дату.
функция Time: TDateTime
Возвращает текущее время.

Далее, функции, работающие с составляющими даты и времени (год, месяц, число, день недели, часы, минуты, секунды и даже миллисекунды):

функция DayOfWeek(Date: TDateTime): Integer
Возвращает текущий номер дня недели: 1 — воскресенье, 7 — суббота.
процедура DecodeDate(Date: TDateTime; var Year, Month, Day: Word)
Разбивает дату Date на год — Year, месяц — Month и день — Day.
процедура DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word)
Разбивает время Time на час — Hour, минуты — Min, секунды — Sec и миллисекунды — MSec.
функция EncodeDate(Year, Month, Day: Word): TDateTime
Объединяет год — Year, месяц — Month и день — Day в значение типа TDateTime.
функция EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime
Объединяет час — Hour, минуты — Min, секунды — Sec и миллисекунды — MSec в значение типа TDateTime.

Наконец, собственно, функции, переводящие дату и время из формата TDateTime в строчный формат:

функция DateTimeToStr(DateTime: TDateTime): String
Преобразует дату и время DateTime в строку.
функция DateToStr(Date: TDateTime): String
Преобразует дату Date в строку.
функция TimeToStr(Time: TDateTime): String
Преобразует время Time в строку.

Следующие функции работают с параметрами возвращаемой строки. Функции с приставкой Ansi работают в том числе и с кириллическими символами. Если символы в строках предполагаются исключительно латинские, то можно использовать аналогичные функции, но без приставки Ansi:

функция AnsiLowerCase(const S: String): String
Возвращает строку S, преобразованную к нижнему регистру.
функция AnsiUpperCase(const S: String): String
Возвращает строку S, преобразованную к верхнему регистру.
функция Length(const S: String): Integer
Возвращает количество символов в строке S.
функция Trim(const S: String): String
Удаляет из строки S начальные и завершающие пробелы и управляющие символы.
функция TrimLeft(const S: String): String
Удаляет из строки S начальные пробелы и управляющие символы.
функция TrimRight(const S: String): String
Удаляет из строки S завершающие пробелы и управляющие символы.

Следующие функции сравнивают две строки между собой:

функция AnsiCompareStr(const S1, S2: String): Integer
Сравнивает две строки S1 и S2 с учётом регистра символов.
Возвращает значение 0 если S1>S2
функция AnsiCompareText(const S1, S2: String): Integer
Сравнивает две строки S1 и S2 без учёта регистра символов.
Возвращает значение 0 если S1>S2

Следующие функции осуществляют поиск в текущей строке подстроки, вставляют, удаляют или заменяют подстроку:

функция Pos(Substr: String; Str: String): Integer
Возвращает позицию (индекс) первого вхождения Substr в строке Str. Если Substr нет в Str, возвращает 0.
функция Insert(Source: String; var S: String; Index: Integer): Integer
Вставляет строку Source в строку S, начиная с номера символа, равного Index
процедура Delete(var S: String; Index, Count: Integer)
Удаляет из строки S подстроку, начинающуюся с номера символа, равного Index, и содержащую до Count символов.
функция StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): String
Заменяет в строке S подстроку OldPattern на строку NewPattern с учётом флага TReplaceFlags. Для работы с этой функцией нужно создать переменную типа TReplaceFlags — это множество, и включить в него одно или оба значения из следующих:
rfReplaceAll — будут заменены все вхождения. Если это значение не будет включено во множество, то будет заменено только первое вхождение;
rfIgnoreCase — замена будет без учёта регистра символов. Если это значение не будет включено во множество, то замена будет чувствительна к регистру символов.

Наконец, функция копирования части строки:

функция Copy(S: String; Index, Count: Integer): String
Возвращает подстроку строки S, начиная с номера символа, равного Index и содержащую до Count символов.

Помимо прочего, эту функцию можно использовать для вывода нецелого числа с нужным количеством цифр после запятой. Для этого, сначала получаем строку из числа формата Real, затем находим функцией Pos позицию запятой в этой строке, прибавляем нужное количество и копируем в результат это количество символов. Вот готовая функция:

function RealToStr(X: Real; Count: Integer): String; //Count — количество цифр после запятой
var S: String;
N: Integer;
begin
S:=FloatToStr(X); //после запятой — длинная последовательность цифр
//DecimalSeparator — константа, содержащая истинный разделитель целой и дробной частей числа N:=Pos(DecimalSeparator, S); //позиция запятой в строке
//вычисляем длину строки с нужным количеством знаков после запятой:
if N=0 //если в строке нет запятой — это целое число, и
then N:=Length(S) //тогда просто выводим это число
else N:=N+Count; //иначе вычисляем длину строки
Result:=Copy(S, 1, N); //копируем часть строки в результат
end;

Или вот, к примеру, текст модуля, обеспечивающего ввод в компонент Edit только чисел.

StringReplace — Функция Delphi

Строки в Delphi состоят из одоного (тип ShortString ) или двух байтов (тип AnsiString, WideString ), содержащих указание количества символов в строке, и последовательности символов. Таким образом ShortString максимально может содержать до 255 символов и занимать память 2 байта ..256 байт, а AnsiString или WideString — максимально могут содержать примерно 2 x 10 30 символов и занимать память 4 байта .. 2 Гбайта.

В типе AnsiString символы кодируются в коде ANSI, а в типе WideString — в коде Unicode.

Общим типом является тип String , который может соответствовать как типу ShortString , так и типу AnsiString . Это определяется директивой компилятора $H . По умолчанию используется <$H+>, и тип String равен типу AnsiString .

Кроме того имеется тип PChar , представляющий так называемую строку с завершающим нулем. Строки с завершающим нулем не содержат байтов длины. В отличие от обычных строк они состоят из последовательности ненулевых символов, за которым следует символ NULL (#0). Никаких ограничений на длину строк с завершающим нулем не накладывается. Фактически он указывает на символ

Расширенный синтаксис позволяет ставить в соответствие строкам с завершающим нулем символьный массив типа

где X — положительное число типа Integer , определяющее количество символов в строке, не считая завершающего символа с кодом 0. В отличие от типа String , символ с индексом 0 здесь является первым символом строки, а последний символ с индексом X — завершающим символом с кодом 0. (см. Функции работы со строками с завершающим нулем)

Список литературы:

  1. Гофман В.Э., Хомоненко А.Д. Delphi 6. — СПб. БХВ-Петербург, 2002. — 1152 с.: ил.
  2. Турбо Паскаль 7.0 — К. Торгово-издательское бюро BHV, 1996 — 448 с.: ил.
  3. Delphi7 Help

Замена подстроки в строке

Delphi , Синтаксис , Текст и Строки

Статья Замена подстроки в строке раздела Синтаксис Текст и Строки может быть полезна для разработчиков на Delphi и FreePascal.

Комментарии и вопросы

Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.

Илон Маск рекомендует:  addslashes - Экранирует спецсимволы в строке
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL