WordNumberIn and WordNumberOf (String functions): Difference between revisions

From m204wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 1: Line 1:
{{Template:String:WordNumberIn and WordNumberOf subtitle}}
{{Template:String:WordNumberIn and WordNumberOf subtitle}}
 
The <var>WordNumberIn</var> and <var>WordNumberOf</var> functions return the word number of the first occurrence of one word (the "needle") within a list of words ("the haystack"). The search respects character case. The difference between the two methods is that for <var>WordNumberIn</var>, the method object string is the "needle" and the first argument is the "haystack", whereas for <var>WordNumberOf</var>, the first argument is the "needle" and the method object string is the "haystack".  Which method is more convenient to use will be application dependent.
The <var>WordNumberIn</var> and <var>WordNumberOf</var> functions return the word number of the first occurrence of one word (the "needle") within a list of words ("the haystack"). The search respects character case. The difference between the two methods is that for <var>WordNumberIn</var>, the method object string is the "needle" and the first argument is the "haystack", whereas for <var>WordNumberOf</var>, the first argument is the "needle" and the method object string is the "haystack".  Which method is more convenient to use will be application dependent.
   
   
Line 11: Line 11:
===Syntax terms===
===Syntax terms===
<table class="syntaxTable">
<table class="syntaxTable">
<tr><th>%number</th><td> A variable to receive the number of the first occurrence of the <var class="term">needle</var> word in the <var class="term">haystack</var> list of words.  If the word <var class="term">needle</var> is not one of the words in <var class="term">haystack</var>, <var class="term">%number</var> is set to 0.
<tr><th>%number</th><td> A variable to receive the number of the first occurrence of the "needle" word in the "haystack" list of words.  If the word "needle" is not one of the words in "haystack", <var class="term">%number</var> is set to 0.
</td></tr>
</td></tr>
<tr><th>string</th>
<tr><th>string</th>
<td>The method object string.  Depending upon whether the <var>WordNumberIn</var> or <var>WordNumberOf</var> function is being used, <var class="term">string</var> may be either the: <ul><li>search target <var class="term">needle</var>, when called as <var>WordNumberIn</var> <li>the search space <var class="term">haystack</var>, when called as <var>WordNumberOf</var></ul>
<td>The method object string; either:
</td></tr>
<ul><li>the search target "needle," when called as <var>WordNumberIn</var>
<li>the list of words "haystack," when called as <var>WordNumberOf</var></ul></td></tr>
<tr><th>haystack</th>
<tr><th>haystack</th>
<td>The list of words within which the <var class="term">needle</var> is searched for.
<td>In <var>WordNumberIn</var>, the list of words within which the
<var class="term">string</var> method object (the "needle") is searched for.</td></tr>
<tr><th>needle</th>
<tr><th>needle</th>
<td>The word which is searched for in the <var class="term">haystack</var>.
<td>In <var>WordNumberOf</var>, the word to be searched for within the <var class="term">string</var> method object list of words (the "haystack").</td></tr>
</td></tr>
<tr><th><var>Spaces</var></th>
<tr><th><var>Spaces</var></th>
<td>A set of "whitespace" characters, that is, characters that separate words. The default is the blank character. If the null string is provided, the blank character is used as the whitespace character.
<td>A set of "whitespace" characters, that is, characters that separate words. The default is the blank character. If the null string is provided, the blank character is used as the whitespace character.
</td></tr>
</td></tr>
</table>
</table>
 
==Usage notes==
==Usage notes==
<ul>
<li><var>WordNumberIn</var> and <var>WordNumberOf</var> do exactly the same thing. The only difference between them is that in <var>WordNumberOf</var>, the "haystack" is the method object <var class="term">string</var> and the <var class="term">needle</var> is the first argument. In <var>WordNumberIn</var>, these roles are reversed: the "needle" is the method object <var class="term">string</var> and the <var class="term">haystack</var> is the first argument.
Which method is preferable will depend on the application, and, in many cases, it will be quite arbitrary which one is used.
</ul>
==Examples==
==Examples==
The following fragment:
The following fragment:
Line 46: Line 51:
However, as the number of words grows large, repeated use of <var>WordNumberIn</var>
However, as the number of words grows large, repeated use of <var>WordNumberIn</var>
is less efficient than using a <var>NamedArrayList</var>.
is less efficient than using a <var>NamedArrayList</var>.
 
==See also==
==See also==
<ul>
<ul>
<li>[[List of StringTokenizer methods]]
<li>[[List of StringTokenizer methods]]
<li><var>[[Word (String function)|Word]]</var> - Select word from list of words
<li><var>[[Words (String function)|Words]]</var> - Sublist of list of words
<li><var>[[WordCount (String function)|WordCount]]</var> - Count words in list
<li><var>WordNumberIn</var> is the OO version of <var>$Lstr_Windex</var>.
<li><var>WordNumberIn</var> is the OO version of <var>$Lstr_Windex</var>.
</ul>
</ul>
{{Template:String:WordNumberIn footer}}
{{Template:String:WordNumberIn footer}}

Revision as of 16:43, 28 April 2011

The word number of a word within a list of words (String class)

[Introduced in Sirius Mods 7.9]


The WordNumberIn and WordNumberOf functions return the word number of the first occurrence of one word (the "needle") within a list of words ("the haystack"). The search respects character case. The difference between the two methods is that for WordNumberIn, the method object string is the "needle" and the first argument is the "haystack", whereas for WordNumberOf, the first argument is the "needle" and the method object string is the "haystack". Which method is more convenient to use will be application dependent.

Note that processing a string of words may be better accomplished with the StringTokenizer class.

Syntax

%number = string:WordNumberIn( haystack, [Spaces= string])

%number = string:WordNumberOf( needle, [Spaces= string])

Syntax terms

%number A variable to receive the number of the first occurrence of the "needle" word in the "haystack" list of words. If the word "needle" is not one of the words in "haystack", %number is set to 0.
string The method object string; either:
  • the search target "needle," when called as WordNumberIn
  • the list of words "haystack," when called as WordNumberOf
haystack In WordNumberIn, the list of words within which the string method object (the "needle") is searched for.
needle In WordNumberOf, the word to be searched for within the string method object list of words (the "haystack").
Spaces A set of "whitespace" characters, that is, characters that separate words. The default is the blank character. If the null string is provided, the blank character is used as the whitespace character.

Usage notes

  • WordNumberIn and WordNumberOf do exactly the same thing. The only difference between them is that in WordNumberOf, the "haystack" is the method object string and the needle is the first argument. In WordNumberIn, these roles are reversed: the "needle" is the method object string and the haystack is the first argument. Which method is preferable will depend on the application, and, in many cases, it will be quite arbitrary which one is used.

Examples

The following fragment:

PrintText {~='aa bb cc':WordNumberOf('bb')} PrintText {~='bb':WordNumberIn('aa bb cc')}

produces the following result:

'aa bb cc':WordNumberOf('bb')=2 'bb':WordNumberIn('aa bb cc')=2

You can use WordNumberIn and Word as "quick and dirty" NamedArraylists:

%x = 'PA' %w = %x:WordNumberIn - ('MA PA MN') %s = ('Massachusetts Pennsylvania Minnesota'):Word(%w) Print 'Full state name:' And %s

However, as the number of words grows large, repeated use of WordNumberIn is less efficient than using a NamedArrayList.

See also