How to split a string of ten characters, for example "12345 * 45688", into an array

I am making a simple calculator in which you enter values ​​in the edit box. I need to split a string into several arrays depending on the number of * + - / in total, for example

I have 22 + 22 * ​​22-22 / 22 I want to split this into five different arrays because there are five different groups of numbers. Then I'm going to add array1 to array two, multiply by array 3 and subtract array4 from this array and divide it by array 5.

+5
source share
4 answers

- , , , ; . . Let Build A Compiler - , , ( , ) . Turbo Pascal, Delphi .

+4

Delphi XE SplitString, , .

+2

, , CalcExpress. , : CalcExpress

0

, .

, .

, [22 "," + "," 22 "," * "," 22 "," - "," 22 "," / "," 22 "].

, .

TCharSet = Set of Char;
TStringArray = Array of String;

function GetSubStrings(InputString: String; CharacterSets: Array of TCharSet): TStringArray;
// Get Sub-strings
var
  Index: Integer;
  Character: Char;
  SubString: String;
  SubStringArray: TStringArray;
  CharacterSetIndex: Integer;
  PreviousCharacterSetIndex: Integer;
begin
  // Get
  SubString := '';
  SetLength(SubStringArray, 0);
  PreviousCharacterSetIndex := -1;
  for Index := 1 to Length(InputString) do
  begin
    // Character
    Character := InputString[Index];

    // Character Set Index
    CharacterSetIndex := GetCharacterSet(Character, CharacterSets);

    // Add
    if (CharacterSetIndex = PreviousCharacterSetIndex) or (Index = 1) then
      // Add Character to SubString
      SubString := SubString + Character
    else
    begin
      // Add SubString To SubString Array
      SetLength(SubStringArray, Length(SubStringArray) + 1);
      SubStringArray[Length(SubStringArray) - 1] := SubString;

      // New SubString
      SubString := Character;
    end;

    // Previous Character Set Index
    PreviousCharacterSetIndex := CharacterSetIndex;

    // Add last SubString
    if Index = Length(InputString)  then
    begin
      // Add SubString To SubString Array
      SetLength(SubStringArray, Length(SubStringArray) + 1);
      SubStringArray[Length(SubStringArray) - 1] := SubString;
    end;
  end;

  // Result
  Result := SubStringArray;
end; 

function GetCharacterSet(Character: Char; CharacterSets: Array of TCharSet): Integer;
// Get Character Set
var
  Index: Integer;
  CharacterSet: TCharSet;
begin
  // Get
  Result := -1;
  for Index := 0 to Length(CharacterSets) - 1 do
  begin
    // Character Set
    CharacterSet := CharacterSets[Index];

    // Check
    if Character in CharacterSet then
    begin
      // Result
      Result := Index;

      // Break
      Break;
    end;
  end;
end;
0

All Articles