Strings in Ruby

Published on 16:42 by DI Edmund Haselwanter

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
  • \a Bell
  • \b Backspace
  • \r Wagenrücklauf
  • \n Neu Zeile
  • \s Leerzeichen
  • \t Tabulator

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.

blog comments powered by Disqus

related Articles:

Deployment of Java Web Applications with Chef from Opscode

There 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-29

Diese 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-22

Diese 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-15

Diese 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-17

Diese Woche Links zu den Themen ipad, iphone, opschef, ruby, OpenCV, detection, image, Weinberg, Ohai, automation, pr, test, gem, cloudfoundry, devops, cfoundry

Data Driven Deployment of a Java Web Application with Chef Solo

Chef Application Cookbook Showcase This Vagrant project on github ( https://github.com/iteh/vagrant-demos/ ) showcases the application cookbook for chef

Links der Woche vom 2011-04-04 bis 2011-04-10

Diese 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-27

Diese 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-20

Diese 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üllen

In 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...