S2 Cookbook: Strings
From Dreamwidth Notes
Contents
- 1 Getting the length of a string
- 2 Concatenating strings
- 3 Finding if a string starts or ends with another string
- 4 Finding a string in another string
- 5 Changing the case of a string
- 6 Comparing two strings to see if they are equal or not equal
- 7 Comparing two strings lexicographically (aka alphabetical order)
- 8 Splitting a string into pieces
- 9 Repeating a string
- 10 Replacing a string inside of another string
- 11 Reversing a string
Getting the length of a string
var string x = "stylish"; # Get the length of our example string var int length = $x->length(); # Print out what the length is """The length of "$x" is ${length}.""";
Will print out:
The length of "stylish" is 7.
Concatenating strings
var string fragment = "I am a "; var string foxy = "quick brown fox"; var string sentence = $fragment + $foxy + "."; # I am a quick brown fox. print "<p>$sentence</p>";
Finding if a string starts or ends with another string
var string foxy = "fox.png"; if( $foxy->ends_with( ".png" ) ) { print "<p>This is a PNG file.</p>"; } if( $foxy->starts_with( "fox" ) ) { print "<p>This is a picture of a fox.</p>"; }
Finding a string in another string
If you're just wanting to know if a string is in another string, use the contains string function:
var string foxy = "I am a quick brown fox."; # The string contains "fox", so the statement prints if( $foxy->contains("fox") ) { print "<p>I am a fox.</p>"; } # This string doesn't contain "wolf", so the statement doesn't print if( $foxy->contains("wolf") ) { print "<p>I am a wolf.</p>"; }
If you need to find the actual location of your substring in a string, you'll want to use the index string function.
var string foxy = "I am a quick brown fox."; # This will print out "Location of fox: 19." var int fox_location = $foxy->index("fox"); if( $fox_location >= 0 ) { print "<p>Location of fox: ${fox_location}.</p>"; } else { print "<p>No fox to be found.</p>"; } # This will print out "No wolf to be found." var int wolf_location = $foxy->index("wolf"); if( $wolf_location >= 0 ) { print "<p>Location of wolf: ${wolf_location}.</p>"; } else { print "<p>No wolf to be found.</p>"; }
When you test to see if the substring was found in the string, remember that the index function starts counting from zero, not one, and returns -1 if it can't find a match.
Changing the case of a string
There are three functions for this, lower, upper, and upperfirst.
var string lowercase = "fox"; var string proper = "Polite"; print "<p>Original lowercase: $lowercase</p>"; print "<p>Uppercase: " + $lowercase->upper() + "</p>"; print "<p>Upper first: " + $lowercase->upperfirst() + "</p>"; print "<p>Original uppercased: $proper</p>"; print "<p>Lowercase: " + $proper->lower() + "</p>";
Comparing two strings to see if they are equal or not equal
var string foxy = "fox"; if( $foxy == "fox" ) { print "<p>This is a fox.</p>"; } else { print "<p>This is not a fox.</p>"; }
Comparing two strings lexicographically (aka alphabetical order)
var string foxy = "fox"; var string wolfish = "wolf"; var int compare = $foxy->compare($wolfish); # Compare: 1 print "<p>Compare: $compare</p>"; # fox comes before wolf if( $compare == 0 ) { print "<p>$foxy and $wolfish are the same</p>"; } elseif ( $compare > 0 ) { print "<p>$foxy comes before $wolfish</p>"; } elseif ( $compare < 0 ) { print "<p>$foxy comes after $wolfish</p>"; }
Splitting a string into pieces
var string sentence = "one fish two fish red cow"; var string[] list = $sentence->split(" "); print "<p>"; # "one", "fish", "two", "fish", "", "red", "cow", foreach var string item ($list) { print """ "$item", """; } print "</p>";
Repeating a string
var string sentence = "I am a quick brown fox."; var int length = $sentence->length(); var string underline = "-"; # Print out the sentence. """<p style="font-family: courier;">$sentence"""; # Underline the sentence using the $underline string. "<br />" + $underline->repeat( $length ) + "</p>";
Will print out:
I am a quick brown fox. -----------------------
Replacing a string inside of another string
var string foxy = "fox"; var string wolfish = "wolf"; var string sentence = "I am a wolf, hunted by wolfhounds."; # I am a wolf, hunted by wolfhounds. print "<p>$sentence</p>"; # I am a fox, hunted by foxhounds. print "<p>" + $sentence->replace($wolfish, $foxy) + "</p>";
Reversing a string
var string foxy = "I am a quick brown fox."; var string backwards_foxy = reverse $foxy; # I am a quick brown fox. """<p>$foxy</p>"""; # .xof nworb kciuq a ma I """<p>$backwards_foxy</p>""";