Difference between revisions of "Sv Find"
imported>AndalayBay m (Added sentence about return value when substring not found.) |
imported>QQuix (Added notes) |
||
Line 1: | Line 1: | ||
{{Function | {{Function | ||
| origin = OBSE | | origin = OBSE | ||
| summary = Returns the index of the first occurrence of a substring within a string variable, starting at the specified position and only including occurrences contained completely within the range <nowiki>[</nowiki>''startPos'', ''startPos + searchLen''<nowiki>]</nowiki>. Returns -1 if the substring is not found in the string variable. Omit the arguments to search the entire string without regard to case. | | summary = Returns the index of the first occurrence of a substring within a string variable, starting at the specified position and only including occurrences contained completely within the range <nowiki>[</nowiki>''startPos'', ''startPos + searchLen''<nowiki>]</nowiki>. | ||
Returns -1 if the substring is not found in the string variable. | |||
Omit the arguments to search the entire string without regard to case. | |||
| name = sv_Find | | name = sv_Find | ||
| returnVal = index | | returnVal = index | ||
Line 29: | Line 33: | ||
}} | }} | ||
}} | }} | ||
__NOTOC__ | |||
==Notes== | |||
*The index within a string starts at 0. | |||
*This function expects a literal as the first parameter (format string). If you are using a string variable, precede it with a $. | |||
let Source := "abcdef" | |||
let Substring := "c" | |||
let i := sv_Find Substring Source ; returns -1 << wrong | |||
let i := sv_Find $Substring Source ; returns 2 | |||
let i := sv_Find "c" Source ; returns 2 | |||
==OBSE Format Specifiers== | |||
{{MessageFormatting}} | {{MessageFormatting}} | ||
{{OBSE Format Specifiers}} | {{OBSE Format Specifiers}} |
Latest revision as of 06:04, 19 August 2013
A function added by the Oblivion Script Extender.
Syntax:
(index:short) sv_Find subString:formatString formatVars source:string_var startPos:short searchLen:short caseSensitive:bool
Returns the index of the first occurrence of a substring within a string variable, starting at the specified position and only including occurrences contained completely within the range [startPos, startPos + searchLen].
Returns -1 if the substring is not found in the string variable.
Omit the arguments to search the entire string without regard to case.
Notes
- The index within a string starts at 0.
- This function expects a literal as the first parameter (format string). If you are using a string variable, precede it with a $.
let Source := "abcdef" let Substring := "c" let i := sv_Find Substring Source ; returns -1 << wrong let i := sv_Find $Substring Source ; returns 2 let i := sv_Find "c" Source ; returns 2
OBSE Format Specifiers
Formatting notation
%.2f - This means format the variable with 2 decimal places.
%.0f - This will format the variable with 0 decimal places, so is the normal choice for integers.
%5.0f - The number in front of the point specifies the minimum width of the number. In this case, there will always be enough space in front of the number for 5 digits:
Number 12 wins Number 1234 wins
Formating switches
The following formatting switches can be used in Oblivion. Put them in any sequence right after the '%'
Switch | Function |
---|---|
+ | Display + in front of positive numbers |
<Space> | Leave a leading space in front of positive numbers |
- | Use left-aligned formation instead of right alligned. |
0 | The filling-char used for formatting is '0' instead of ' ' |
Other Functions
%g - This usually works just like "%.0f", displaying 0 decimal places. When the number is 1000000 or larger, though, the game displays it in scientific notation (1E+006)
%.3e - Shows numbers in scientific notation (123000 = 1.23E+005)
%% - Use this to display a percent-sign in the message
OBSE Format Specifiers
In addition to the format specifiers supported by Oblivion's Message and MessageBox functions, OBSE functions understand additional specifiers (in alphabetic order).
%a - Prints the character corresponding to the specified ASCII code.
- Passing codes for unprintable characters (such as 0) may have unpredictable (though occasionally useful) results.
- Passing the code for a percent sign will most likely crash the game as literal percent signs must come in pairs.
%B - toggles blue text on for console output.
%b - toggles blue text off for console output.
- Example: "%BBlue%b suede shoes": when printed to the console, the word "Blue" will be printed in blue text.
%c - Prints the specified component of the specified reference or object.
- Takes two arguments - a reference variable set to the spell or faction, and an index. Behaves differently depending on the passed reference:
- Faction: Prints the nth male rank title
- Magic Item: Prints the nth Magic Effect
- Prior to OBSE v0015, magic effects using actor values (such as Restore Agility) would not display the specific actor value.
- Actor values may not display correctly for non-English versions of Oblivion.
%e – replaced by nothing.
- Provides a workaround for the script compiler's refusal to accept an empty string as a command argument.
- Example:
SetNameEx "" object ; attempts to remove an object's name, but won't compile SetNameEx "%e" object ; sets the name to an empty string
- Can be used outside of format strings. When included in any string literal, %e will be replaced by an empty string.
%i - Prints the FormID of the specified reference or object.
- GOTCHA : as of v18, if a refVar is passed which points to a ref not loaded in memory %i will print 00000000 even if the refVar is not empty.
%k - Prints the name of the key for the specified DirectInput scancode, such as those used for IsKeyPressed2.
%n - Prints the name of the specified reference or object.
- In OBSE versions prior to v0014a, %n can crash if the object's name contains a percent sign.
%p - Displays a pronoun based on the gender of the object parameter:
- %po - objective (him, her, it)
- %pp - possessive (his, her, its)
- %ps - subjective (he, she, it)
%q - Prints a double quote character.
- Can be used outside of format strings. When included in any string literal, %q will be replaced by a double quote
%r - Prints a carriage return, ending the current line and starting at the next.
- Can be used outside of format strings. When included in any string literal, %r will be replaced by a carriage return.
%v - Prints the actor value (i.e. an attribute or skill) associated with the passed actor value code.
%x - Prints an integer in hexadecimal format.
- An optional digit from 0-9 immediately following this specifier indicates the minimum width of the displayed value.
- For example, MessageEx "%x4" 255 will display "00FF".
%z – Prints the contents of a string variable.
- Example: sv_construct “The string is: %z” MyStringVar
%{...%} - Conditionally displays or omits the bracketed portion of the format string based on a boolean value. Accepts a variable - if the value of the variable is zero, all text and parameters up to the matching right bracket will be ignored. Otherwise the bracketed text will be displayed.
- Example (should be single-line, line-breaks added for Wiki)
MBoxEX "Doom comes%{ for you%}. What will you do? |Dig a hole, hide %{|Find someone, offer as sacrifice|Find someone, use as shield%} |Enjoy your final 15 minutes" bDisplay bDisplay
If bDisplay is 0 this will print out
Doom comes. What will you do? [Dig a hole, hide] [Enjoy your final 15 minutes]
If bDisplay is 1 this will print out
Doom comes for you. What will you do? [Dig a hole, hide] [Find someone, offer as sacrifice] [Find someone, use as shield] [Enjoy your final 15 minutes]
- Note: When using GetButtonPressed with messageboxes that can have a variable number of buttons displayed using %{...%}, the return value will be relative to the actual number of buttons displayed and will not include buttons hidden by %{...%}.