And then detect the blank newlines with this script
Code: Select all
param none
tv_reqstring [MULTILINE] "Input Text|"
input=result
IF CMP("Cancel",input)==0
newText = Replace(input,'\n',';')
lengthSentence = NewParse(newText,';')
FOR i=1 TO lengthSentence
string = var(i)
tv_warn i":"string
END
END
// !!!! rest of script is George Basic and advanced functions
//{{{** BASIC FUNCTIONS
//{{{ Find
//------------------------------------------
//
// Find
//
// Function: find a character into a string
// from a specified start position
//
// Call: Find(string,car,start)
//
// Arguments:
// string = characters string
// car = character to look for
// start = start position in string
//
// Return: position of character
// 0 if character does not exist
// into string
// -1 if invalid position
// (negative, null or higher
// than string length)
//
//------------------------------------------
FUNCTION Find(string,car,start)
LOCAL i size
i = start
size = LEN(string)
IF ((start <= 0) || (start > size) || (CMP(car,"") == 1))
RETURN -1
END
DO
IF (CMP(CHAR(string,i),car) == 1)
RETURN i
END
UNTIL ((i=i+1) > size)
RETURN 0
END
//}}}
//{{{ FirstPos(string,car)
//------------------------------------------
//
// FirstPos
//
// Function: find first occurence of a
// character into a string
//
// Call: FirstPos(string,car)
//
// Arguments:
// string = characters string
// car = character to look for
//
// Return: position of character
// or 0 id character does not
// exist into string.
//
//------------------------------------------
FUNCTION FirstPos(string,car)
RETURN Find(string,car,1)
END
//}}}
//{{{ LastPos(string,car)
//------------------------------------------
//
// LastPos
//
// Function: find last occurence of a
// character into a string
//
// Call: LastPos(string,car)
//
// Arguments:
// string = characters string
// car = character to look for
//
// Return: position of character
// or 0 if character does not
// exist into string.
//
//------------------------------------------
FUNCTION LastPos(string,car)
LOCAL loop myChar
pos = LEN(string)
loop = 1
WHILE loop
myChar = CHAR(string,pos)
IF CMP(myChar,car) == 1
loop =0
ELSE
pos = pos-1
END
IF pos<1
loop=0
END
END
RETURN pos
END
//}}}
//{{{ FindString(string,search,start)
//------------------------------------------
//
// FindString
//
// Function: find a substring into a string
// from a specified start position
//
// Call: FindString(string,search,start)
//
// Arguments:
// string = characters string
// search = substring to look for
// start = start position in string
//
// Return: start position of substring
// 0 if substring does not exist
// into string
// -1 if invalid start position
// (negative, null or higher
// than string length) or if
// substring is empty
//
//------------------------------------------
FUNCTION FindString(string,search,start)
LOCAL found j pos lastpos lstr lsrch
found = 0
lastpos = start
lstr = LEN(string)
lsrch = LEN(search)
IF (CMP(search,"") == 1)
RETURN -1
END
WHILE ((pos = Find(string,CHAR(search,1),lastpos)) > 0)
j = 1
found = 1
IF (j == lsrch)
RETURN pos
END
WHILE ((j < lsrch) && (found == 1))
IF ((pos+j) > lstr)
RETURN 0
ELSE
IF (CMP(CHAR(search,j+1),CHAR(string,pos+j)) == 0)
lastpos = pos+j
found = 0
END
END
j = j+1
END
IF (found == 1)
RETURN pos
END
END
RETURN pos
END
//}}}
//{{{ LeftString(string,number)
//------------------------------------------
//
// LeftString
//
// Function: extract a substring beginning
// at the start of a string
//
// Call: LeftString(string,number)
//
// Arguments:
// string = characters string
// number = number of character to
// extract from string
//
// Return: result substring
// or 0 if number is negative
// or null.
//
//------------------------------------------
FUNCTION LeftString(string,number)
LOCAL size
size = LEN(string)
IF (number > 0)
IF (number > size)
number = size
END
RETURN CUT(string,1,number)
END
RETURN 0
END
//}}}
//{{{ RightString(string,number)
//------------------------------------------
//
// RightString
//
// Function: extract a substring ending
// at the end of a string
//
// Call: RightString(string,number)
//
// Arguments:
// string = characters string
// number = number of character to
// extract from string
//
// Return: result substring
// or 0 if number is negative
// or null.
//
//------------------------------------------
FUNCTION RightString(string,number)
LOCAL size
size = LEN(string)
IF (number > 0)
IF (number > size)
number = size
END
RETURN CUT(string,size-number+1,size)
END
RETURN 0
END
//}}}
//{{{ MidString(string,first,size)
//------------------------------------------
//
// MidString
//
// Function: extract a substring from a
// string
//
// Call: MidString(string,first,size)
//
// Arguments:
// string = characters string
// first = start position in string
// cha�ne
// size = number of characters
//
// Return: result substring
// or 0 if number or first are
// negatives or null.
//
//------------------------------------------
FUNCTION MidString(string,first,size)
LOCAL ln
ln = LEN(string)
IF ((first > 0) && (size > 0))
IF ((first+size-1) > ln)
size = ln-first+1
END
RETURN CUT(string,first,first+size-1)
END
RETURN 0
END
//}}}
//{{{ InsertAtPos(string,insert,pos)
//------------------------------------------
//
// InsertAtPos
//
// Function: insert a string in another
// string at a specified position
//
// Call: InsertAtPos(string,insert,pos)
//
// Arguments:
// string = characters string
// insert = string to insert
// pos = start position for insertion
//
// Return: result string after insertion
// or 0 if start position is
// invalid (negative, null or
// higher than string length)
//
//------------------------------------------
FUNCTION InsertAtPos(string,insert,pos)
LOCAL workstr str1 size
size = LEN(string)
IF ((pos < 0) || (pos > size))
RETURN 0
END
IF (pos == 0)
RETURN insert""string
END
IF (pos == size)
RETURN string""insert
END
workstr = CUT(string,1,pos)
IF (pos < size)
str1 = CUT(string,pos+1,size)
RETURN workstr""insert""str1
ELSE
RETURN workstr""insert
END
END
//}}}
//}}}**
//{{{** ADVANCED STRING FUNCTIONS
//{{{ InsertAfter(string,insert,search)
//------------------------------------------
//
// InsertAfter
//
// Function: insert a string after each
// occurence of a character or
// a set of characters into
// another string
//
// Call: InsertAfter(string,insert,search)
//
// Arguments:
// string = characters string
// insert = string to insert
// search = character or substring
// to look for
//
// Return: result string after insertion
//
//------------------------------------------
FUNCTION InsertAfter(string,insert,search)
LOCAL pos workstr size
pos = 1
workstr = string
size = LEN(search)
WHILE ((pos = FindString(workstr,search,pos)) > 0)
workstr = InsertStringAtPos(workstr,insert,pos+size-1)
pos = pos+size+LEN(insert)
END
RETURN workstr
END
//}}}
//{{{ InsertBefore
//------------------------------------------
//
// InsertBefore
//
// Function: insert a string before each
// occurence of a character or
// a set of characters into
// another string
//
// Call: InsertBefore(string,insert,search)
//
// Arguments:
// string = characters string
// insert = string to insert
// search = character or substring
// to look for
//
// Return: result string after insertion
//
//------------------------------------------
FUNCTION InsertBefore(string,insert,search)
LOCAL pos workstr
pos = 1
workstr = string
WHILE ((pos = FindString(workstr,search,pos)) > 0)
workstr = InsertStringAtPos(workstr,insert,pos-1)
pos = pos+LEN(search)+LEN(insert)
END
RETURN workstr
END
//}}}
//{{{ Delete
//------------------------------------------
//
// Delete
//
// Function: delete all occurences of a
// substring into a string
//
// Call: Delete(string,search)
//
// Arguments:
// string = characters string
// search = substring to delete
//
// Return: result string after deletion
//
//------------------------------------------
FUNCTION Delete(string,search)
LOCAL workstr str1 str2 pos size
workstr = string
pos = 1
size = LEN(search)
WHILE ((pos = FindString(workstr,search,1)) > 0)
IF ((pos != 1) && ((pos+size) < LEN(workstr)))
str1 = CUT(workstr,1,pos-1)
str2 = CUT(workstr,pos+size,LEN(workstr))
workstr = str1""str2
ELSE
IF (pos == 1)
IF ((size+1) < LEN(workstr))
workstr = CUT(workstr,size+1,LEN(workstr))
ELSE
workstr = ""
END
ELSE
workstr = CUT(workstr,1,pos-1)
END
END
END
RETURN workstr
END
//}}}
//{{{ Replace
//------------------------------------------
//
// Replace
//
// Function: replace each occurence of a
// substring into a string with
// another string
//
// Call: Replace(string,search,repl)
//
// Arguments:
// string = characters string
// search = substring to look for
// repl = replacement substring
//
// Return: result string after replacement
//
//------------------------------------------
FUNCTION Replace(string,search,repl)
LOCAL pos workstr str1 str2 size
pos = 1
workstr = string
size = LEN(search)
WHILE ((pos = FindString(workstr,search,pos)) > 0)
IF (pos == 1)
str1 = CUT(workstr,size+1,LEN(workstr))
workstr = repl""str1
pos = 0
ELSE
str1 = CUT(workstr,1,pos-1)
IF ((pos+size) < LEN(workstr))
str2 = CUT(workstr,pos+size,LEN(workstr))
workstr = str1""repl""str2
ELSE
workstr = str1""repl
END
END
pos = pos+LEN(repl)
END
RETURN workstr
END
//}}}
//{{{ NewParse(string,divider)
//------------------------------------------
//
// NewParse
//
// Function: cut a string into several parts and
// store each part into a variable.
// The string is cut before each
// occurence of a specified character.
//
// Call: NewParse(string,divider)
//
// Arguments:
// string = characters string
// divider = character used as a separator
// between each part of the string
//
// Return: number of variables created.
// This function create global variables
// named var(1), var(2)...var(N), where
// N is the value returned by the function.
//
// Note: if the string contained two or more
// successive separators, no variable is
// created for these parts of the string.
// For example, if you call the NewParse
// function for "First;;Second" with
// divider=";", only two variables are
// created (var(1)="First" and
// var(2)="Second").
//
//------------------------------------------
FUNCTION NewParse(string,divider)
LOCAL pos i workstr size
i = 0
pos = 1
workstr = string
IF ((CMP(workstr,"") == 0) && (CMP(divider,"") == 0) && (CMP(workstr,divider) == 0))
WHILE ((pos = Find(workstr,divider,1)) > 0)
IF ((pos != 1) && (pos != LEN(workstr)))
i = i+1
var(i) = CUT(workstr,1,pos-1)
workstr = CUT(workstr,pos+1,LEN(workstr))
ELSE
IF (pos == 1)
IF (pos != LEN(workstr))
workstr = CUT(workstr,2,LEN(workstr))
ELSE
workstr = ""
END
ELSE
workstr = CUT(workstr,pos,LEN(workstr))
END
END
END
if (CMP(workstr,0) == 0)
i = i+1
var(i) = workstr
END
END
RETURN i
END
//}}}
//{{{ FileRequester(title,path,file,pattern)
//------------------------------------------
//
// FileRequester
//
// Function: open a file requester
//
// Call: FileRequester(title,path,file,pattern)
//
// Arguments:
// title = requester title
// path = default directory
// file = default filename
// pattern = default pattern
//
// Return: 0 if user clicks on Cancel
// 1 if user chooses a file. This
// function creates three global
// variables: pathname (path
// to choosen file), filename
// (name of choosen file without
// extension) and extension
// (extension of choosen file)
//
//------------------------------------------
FUNCTION FileRequester(title,path,file,pattern)
LOCAL fullname point slash size titre
pathname = ""
filename = ""
extension = ""
IF (CMP(pattern,0) == 1)
titre = "|"
ELSE
titre = "|"pattern
END
IF (CMP(file,0) == 1)
titre = "|"titre
ELSE
titre = "|"file""titre
END
IF (CMP(path,0) == 1)
titre = "|"titre
ELSE
titre = "|"path""titre
END
IF (CMP(title,0) == 1)
titre = "Choose a file"titre
ELSE
titre = title""titre
END
tv_ReqFile titre
fullname = Result
size = LEN(fullname)
IF (CMP(fullname,"Cancel") == 1)
RETURN 0
ELSE
IF ((point = LastPos(fullname,".")) != 0)
extension = CUT(fullname,point+1,size)
size = point-1
fullname = CUT(fullname,1,size)
END
IF ((slash = LastPos(fullname,"\")) != 0)
filename = CUT(fullname,slash+1,size)
size = slash-1
pathname = CUT(fullname,1,size)
END
RETURN 1
END
END
//}}}
//}}}**
Code: Select all
mads
juul
Code: Select all
1:mads
2:0
3:juul
But if I input this manual in tv_reqstring [MULTILINE]
I get the output
Code: Select all
1:mads
2:juul
So in the script I use newText = Replace(input,'\n',';')
to replace "\n" with ; so I can break it aPART.
But what shall I use when I input the text manually
-Mads