In den vorangegangenen Artikeln haben wir schon Strings verwendet. Es gibt zwei Arten von Strings in Ruby. Strings mit doppelten Anführungszeichen " und Strings in einfachen Anführungszeichen '. Ruby verhält sich hier also wie die meisten anderen Sprachen. Der grosse Unterschied zwischen diesen beiden Varianten ist, wie Ruby den Inhalt interpretiert. Oder eben: Wie Ruby ihn eventuell nicht interpretiert ;-)
1 >> "this is a string"
2 => "this is a string"
3
4 >> 'this is another string'
5 => "this is another string"
6
7 >> "we can calc: 2+2=#{2+2}"
8 => "we can calc: 2+2=4"
9
10 >> 'opps. wrong quotation for calc #{2+2}'
11 => "opps. wrong quotation for calc \#{2+2}"
12
Strings die in doppelte Anführungszeichen eingefasst sind werden in Ruby interpoliert . Strings in einfachen Anführungszeichen werden so interpretiert wie sie dastehen, bis auf zwei Ausnahmen:
\’=> um das einfache‘zu escapen\\=> um das Escape Zeichen zu escapen
\ ist eine sogenannte Escape Sequenz
Da Ruby bei einfachen Anführungszeichen alle Zeichen so versteht wie sie da stehen wird auch die Berechnung bei angeführten “wrong quotation” Beispiel nicht ausgeführt.
Strings in doppelten Anführungsstrichen
Strings in doppelten Anführungsstrichen werden ausgewertet. Das heisst alle im String enthaltenen Expressions werden durch ihr Ergebnis, ihren Wert ersetzt. Diesen Vorgang nennt man Interpolation.
Weiters gibt es auch viel mehr Escape Sequenzen.
\”Das Doppeltes Anführungszeichen\\Backslash\aBell\bBackspace\rWagenrücklauf\nNeu Zeile\sLeerzeichen\tTabulator
Einige Beispiele:
1 >> puts "Hello\t\tworld"
2 Hello world
3 >> puts "Hello\b\b\b\b\bGoodbye world"
4 Goodbye world
5
6 >> puts "Hello\rStart over world"
7 Start over world
8
9 >> puts "1. Hello\n2. World"
10 1. Hello
11 2. World
String Interpolation
Die String Interpolation erlaubt das Ausführen von Ruby Code in Strings. Die Syntax dafür ist #{expression}. Die expression kann hier beliebiger Ruby Code sein. Hier ein paar einfache Beispiele:
1 >> "1 + 2 = #{1 + 2}"
2 => "1 + 2 = 3"
3
4 >> "the meaning of life is #{1/0}"
5 ZeroDivisionError: divided by 0
6 from (irb):75:in '/'
7 from (irb):75
8 from :0
9
10 >> "ein string und #{"noch #{['e','i','n'].join}" + ' string'}"
11 => "ein string und noch ein string"
Das erste Beispiel zeigt, dass man in Strings einfach rechnen kann.
Das zweite Beispiel veranschaulicht, dass hier besonders auf eine gute Fehlerbehandlung geachtet werden muss. Es sollten wirklich nur Expressions im String vorkommen, die auch ein String Ergebnis zurück liefern können. In diesem Beispiel versagt die Division durch O.
Das dritte Beispiel zeigt einen etwas komplizierteren Ausdruck. Es wird hier zuerst aus einem Array mit einem join ein String gemacht. Zu diesem String wird dann ' string' dazu addiert.
Weitere Artikel die Sie interessieren könnten:
Deployment von Java Web Applikationen mit Chef von OpscodeThere is a rework of the data driven deployment of java web applications. This Vagrant project on github ( https://github.com/iteh/vagrant-demos/ ) showcases the application cookbook for chef with a reworked application definition and LWRP for...
Links der Woche vom 2011-05-23 bis 2011-05-29Diese Woche Links zu den Themen Windows, Ruby, opscode, JavaScript, maps, Leaflet, WordPress, Chef, windows, powershell, opschef, ios, ruby, devops, sysadmin, monitoringsucks
Links der Woche vom 2011-05-16 bis 2011-05-22Diese Woche Links zu den Themen coffeebeans, Rails, CoffeeScript, Array, Ruby, Chef, Django, zo, devops, sysadmin, git, chef, CSS3, HTML5, WordPress, nipplegate, MongoDB, rails, rails3, asciicast, test, Android, opschef, Gem, aws, slim, Haml, ruby
Links der Woche vom 2011-05-09 bis 2011-05-15Diese Woche Links zu den Themen wi, opschef, ActiveAdmin, rails, ror, ruby, HTML5, Chef, cnet, MongoDB, Sinatra, Rack, apple, git, aws, chef, opscode, sysadmin, Ksplice, noSQL, RubyTutorials, CSS3, EC2, AWS, MacRuby, iOS, m
Links der Woche vom 2011-04-11 bis 2011-04-17Diese Woche Links zu den Themen ipad, iphone, opschef, ruby, OpenCV, detection, image, Weinberg, Ohai, automation, pr, test, gem, cloudfoundry, devops, cfoundry
Data Driven Deployment einer Java Web Application mit Chef SoloChef Application Cookbook Showcase Dieses Vagrant Projekt auf unserem Github Repository ( https://github.com/iteh/vagrant-demos/ ) zeigt die Verwendung des Application Cookbooks für Chef
Links der Woche vom 2011-04-04 bis 2011-04-10Diese Woche Links zu den Themen Pow, Rack, ActiveRecord, Rails, Algorithms, Ruby, rails, optimize, CSS3, railscasts, chat, macbook, opschef, ruby
Links der Woche vom 2011-03-21 bis 2011-03-27Diese Woche Links zu den Themen MacRuby, Java, Ruby, Mirah, CSS, refreshtoplayagain, gainsboro, photo, Design, mechanize, capybara, PHP, Rails, html5, webdesign, XCode, iPads, WordPress, Vagrant, Opscode, RUBY, Selenium, php, opschef, osx, devops,...
Links der Woche vom 2011-03-14 bis 2011-03-20Diese Woche Links zu den Themen opschef, chef, mwrc, saas, Subscription, Billing, git, ruby, HTTP, Rails, Caching, devops, vagrant, opscode, Wordpress
Wordpress über JSON Api mit Facebook Page oder Tumblr befüllenIn diesem Beispiel zeigen wir die Installation von Wordpress in einem Ubuntu LAMP Stack. Weiters wird das JSON-Api Plugin für Wordpress und ein Theme installiert. Danach wird mit Mechanize der Wordpress Blog automatisch installiert und...


