<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Ruby 字符串 > 原文: [https://zetcode.com/lang/rubytutorial/strings/](https://zetcode.com/lang/rubytutorial/strings/) 在 Ruby 教程的這一部分中,我們將更詳細地處理字符串數據。 字符串是計算機語言中最重要的數據類型之一。 這就是為什么我們將一整章專門討論在 Ruby 中使用字符串的原因。 字符串是 Unicode 字符序列。 它是一種存儲數據值序列的數據類型,其中元素通常根據字符編碼代表字符。 當字符串按字面意義出現在源代碼中時,稱為字符串字面值。 ## Ruby 字符串第一個示例 在 Ruby 中,字符串字面值用單引號或雙引號引起來。 ```ruby #!/usr/bin/ruby # first.rb puts 'Python language' puts "Ruby language" ``` 該示例有兩個字符串字面值。 第一個用單引號引起來。 另一個用雙引號引起來。 ```ruby $ ./first.rb Python language Ruby language ``` 輸出。 ## Ruby 使用引號 如果我們想顯示報價,例如直接講話怎么辦? 基本上有兩種方法可以做到這一點。 ```ruby #!/usr/bin/ruby puts "There are many stars" puts "He said, \"Which one is your favourite?\"" puts 'There are many stars' puts 'He said, "Which one is your favourite?"' ``` 我們使用(`\`)字符轉義其他引號。 通常,雙引號用于分隔字符串字面值。 但是,當轉義時,其原始含義被抑制。 它顯示為普通字符,可以在字符串字面值中使用。 在引號中使用引號的第二種方法是混合單引號和雙引號。 ```ruby $ ./quotes.exe There are many stars. He said, "Which one is your favourite?" ``` Output. ## Ruby 轉義序列 轉義序列是在字符串字面值中使用時具有特定含義的特殊字符。 ```ruby #!/usr/bin/ruby puts "one two three four" puts "one\ntwo\nthree\nfour" ``` 最常見的轉義序列之一是換行符`\n`。 它有許多編程語言可用。 換行符后的下一個字符將出現在新行中。 ```ruby $ ./newline.rb one two three four one two three four ``` 在上面腳本的輸出中,換行符后的單詞出現在換行符上。 `r`,`b`和`t`字符是普通字母字符。 以`\`字符開頭時,它們具有特殊含義。 ```ruby #!/usr/bin/ruby puts " bbb\raaa" puts "Joan\b\b\bane" puts "Towering\tinferno" ``` 在上面的示例中,我們使用了三個不同的轉義字符。 ```ruby puts " bbb\raaa" ``` 回車`\r`是行尾到行首的控制字符。 在將字符串打印到控制臺之前,先對其進行處理。 轉義序列使`aaa`字符放置在`bbb`字符之前。 輸出為`aaabbb`。 ```ruby puts "Joan\b\b\bane" ``` `\b`控制字符是一個空格。 刪除前一個字符。 打印到控制臺的字符串是`"Jane"`而不是`"Joan"`。 ```ruby puts "Towering\tinferno" ``` 最后,`\t`轉義序列在兩個單詞之間放置一個制表符空間。 ```ruby $ ./escapes.rb aaabbb Jane Towering inferno ``` 示例的輸出。 反斜杠字符`\`是用于創建轉義序列的特殊字符。 當需要打印反斜杠本身時,它前面會帶有另一個反斜杠。 其默認含義被轉義并被打印。 單引號和雙引號用于在 Ruby 中定界字符串。 為了打印它們,它們之前還帶有`\`。 ```ruby #!/usr/bin/ruby puts "The special character \\" puts "The special character \'" puts "The special character \"" ``` 在這個簡單的腳本中,我們將所有三個字符打印到終端。 ```ruby $ ./specials.rb The special character \ The special character ' The special character " ``` Output. ## Ruby 訪問字符串元素 可以在 Ruby 中訪問字符串元素。 為此,我們使用方括號`[]`。 在方括號內,我們可以放置字符串,索引或范圍。 ```ruby #!/usr/bin/ruby msg = "Ruby language" puts msg["Ruby"] puts msg["Python"] puts msg[0] puts msg[-1] puts msg[0, 3] puts msg[0..9] puts msg[0, msg.length] ``` 此代碼示例說明如何訪問字符串的一部分。 ```ruby msg = "Ruby language" ``` 這是我們將要訪問的字符串。 ```ruby puts msg["Ruby"] ``` 在此代碼行中,我們測試字符串`'Ruby'`是否為`msg`字符串的子字符串。 如果為`true`,則返回我們要查找的字符串。 ```ruby puts msg[0] ``` 字符串的字符可以通過其索引進行訪問。 數字從 0 開始。換句話說,0 是第一個字符的索引。 `msg[0]`返回字符串的第一個字符,即`R`。 ```ruby puts msg[-1] ``` 在這里,我們訪問字符串的最后一個字符。 -1 代表字符串的最后一個索引。 ```ruby puts msg[0, 3] ``` 用逗號分隔的兩個索引返回從第一個索引開始到第二個索引結束的字符(不包括在內)。 ```ruby puts msg[0..9] ``` 也可以使用范圍運算符。 在這里,我們打印`msg`字符串的前十個字符。 ```ruby puts msg[0, msg.length] ``` 該行返回整個字符串。 `msg.length`返回字符串的大小。 ```ruby $ ./access.rb Ruby R e Rub Ruby langu Ruby language ``` Output of the example. ## Ruby 多行字符串 在許多編程語言中,創建多行字符串需要付出額外的努力。 在 Visual Basic 中尤其如此。 在 Ruby 中,可以輕松創建多行字符串。 ```ruby #!/usr/bin/ruby puts "I hear Mariachi static on my radio And the tubes they glow in the dark And I'm there with her in Ensenada And I'm here in Echo Park " puts %/ Carmelita hold me tighter I think I'm sinking down And I'm all strung out on heroin On the outskirts of town/ puts <<STRING Well, I'm sittin' here playing solitaire With my pearl-handled deck The county won't give me no more methadone And they cut off your welfare check STRING ``` 在示例中,我們有 Carmelita 歌曲的歌詞。 我們展示了三種打印多行字符串的方法。 可以在雙引號中使用它們。 我們可以使用% 字符來構建多行字符串。 `%`后面的字符也將字符串括起來。 最后,我們可以使用 heredoc 語法。 在此語法中,我們使用`<<`,后跟一些字符串。 該字符串包含多行字符串。 它還必須保持對齊。 ## Ruby 變量插值 變量插值是用字符串字面值中的值替換變量。 要用值替換變量,將變量名放在字符串字面值內的`#{`和`}`字符之間。 ```ruby #!/usr/bin/ruby name = "Jane" age = 17 puts "#{name} is #{age} years old" ``` 在此示例中,我們替換字符串中的兩個變量:`name`和`age`。 ```ruby $ ./interpolation.rb Jane is 17 years old ``` 在替換中,可以使用表達式。 ```ruby #!/usr/bin/ruby x = 5 y = 6 puts "The product of #{x} and #{y} is #{x*y}" ``` 這是替換表達式的一個示例。 ```ruby $ ./interpolation2.rb The product of 5 and 6 is 30 ``` 運行示例。 還有另一種替代變量的方法。 它類似于 Python 2.x 支持插值的方式。 ```ruby #!/usr/bin/ruby name = "Jane" age = 17 message = "%s is %d years old" % [name, age] puts message ``` 例。 ```ruby message = "%s is %d years old" % [name, age] ``` 我們在使用它之前先構建一個字符串。 `%s`和`%d`分別是期望包含字符串和數字的格式化字符。 這些值在`%`字符后的方括號中提供。 ## Ruby 連接字符串 連接字符串是從多個字符串中創建一個字符串。 ```ruby #!/usr/bin/ruby lang = "Ruby" + " programming" + " languge" puts lang lang = "Python" " programming" " language" puts lang lang = "Perl" << " programming" << " language" puts lang lang = "Java".concat(" programming").concat(" language") puts lang ``` Ruby 提供了多種連接字符串的方法。 ```ruby lang = "Ruby" + " programming" + " languge" ``` 加號運算符是最常用的運算符,用于添加計算機語言中的字符串。 Perl 和 PHP 使用點`.`運算符來連接字符串。 ```ruby lang = "Python" " programming" " language" ``` Ruby 自動連接后續的字符串。 ```ruby lang = "Perl" << " programming" << " language" ``` 可以用來連接字符串的另一個運算符是`<<`。 ```ruby lang = "Java".concat(" programming").concat(" language") ``` 實際上,每個字符串字面值都是一個對象。 我們可以在每個 Ruby 對象上調用各種方法。 在字符串對象上,我們可以調用`concat`方法,該方法將添加兩個字符串對象。 它還返回最終對象,我們可以在該對象上調用另一個方法。 因此,我們可以將這些方法放在一個鏈中。 ```ruby $ ./concatenate.rb Ruby programming languge Python programming language Perl programming language Java programming language ``` Output. ## Ruby 凍結字符串 在 Java 或 C# 中,字符串是不可變的。 這意味著我們無法修改現有字符串。 我們只能從現有的字符串中創建一個新字符串。 在 Ruby 中,默認情況下字符串不是不可變的。 Ruby 中的字符串對象具有`freeze`方法,這使它們不可變。 ```ruby #!/usr/bin/ruby msg = "Jane" msg << " is " msg << "17 years old" puts msg msg.freeze #msg << "and she is pretty" ``` 在此示例中,我們演示了可以修改字符串。 但是,在對字符串對象調用`freeze`方法之后,我們將無法再修改字符串。 如果我們取消注釋代碼行,則會收到“無法修改凍結的字符串”錯誤消息。 ## Ruby 比較字符串 比較字符串是編程中的常見工作。 我們可以使用`==`運算符或`eql?`方法比較兩個字符串。 如果字符串相等,則返回`true`;否則返回`false`。 ```ruby #!/usr/bin/ruby puts "12" == "12" puts "17" == "9" puts "aa" == "ab" puts "Jane".eql? "Jan" puts "Jane".eql? "Jane" ``` 在此代碼示例中,我們比較了一些字符串。 ```ruby puts "12" == "12" ``` 這兩個字符串相等,該行返回`true`。 ```ruby puts "aa" == "ab" ``` 兩個字符串的前兩個字符相等。 接下來比較以下字符。 它們是不同的,因此該行返回`false`。 ```ruby puts "Jane".eql? "Jan" ``` `eql?`方法用于比較兩個字符串。 字符串是對象,并且都具有內置的`eql?`方法。 該方法采用一個參數,即我們要與之比較的第一個字符串的字符串。 ```ruby $ ./comparing.rb true false false false true ``` 程序的輸出。 Ruby 具有飛船運算符`<==>`。 該運算符來自 Perl 語言。 與上面兩種比較字符串(返回`true`或`false`)的方式不同,此運算符將返回 1、0 或 -1。 取決于左參數相對于右參數的值。 如果左參數大于右參數,則運算符返回 1。如果左參數小于右參數,則運算符返回 -1。 如果兩個參數相等,則運算符將返回 0。這意味著一個字符大于另一個字符? 字符在表中排序。 每個字符在表中都有一個位置。 比較字符時,我們將比較它們在此類表格中的位置。 例如,在 ASCII 表中,字符`a`位于字符`b`之前。 因此比較`<==> b`會返回 -1,因為左側參數的位置比`b`低。 ```ruby #!/usr/bin/ruby puts "a" <==> "b" puts "b" <==> "a" puts "a" <==> "a" ``` 將角色與太空飛船運算符進行比較。 ```ruby $ ./spaceship.rb -1 1 0 ``` Output of the example. 不管大小寫,都可以比較字符串。 為此,Ruby 具有`casecmp`方法。 該方法的工作方式與飛船運算符相同。 ```ruby #!/usr/bin/ruby puts "Jane".casecmp "Jane" puts "Jane".casecmp "jane" puts "Jane".casecmp "Jan" ``` Example. ```ruby puts "Jane".casecmp "Jane" puts "Jane".casecmp "jane" ``` 這兩行返回相同的結果,即 0。在這種情況下,我們不考慮字符是大寫還是小寫。 ```ruby $ ./case.rb 0 0 1 ``` Output of the example. ## 字符串是 Ruby 中的對象 Ruby 是一種面向對象的語言。 對象是 OOP 程序的基本構建塊。 字符串也是對象。 對象是數據和方法的組合。 在 OOP 程序中,對象被創建并且它們之間相互通信。 ```ruby #!/usr/bin/ruby website = "google.com" puts website website = String.new "zetcode.com" puts website ``` 在上面的示例中,我們展示了在 Ruby 中創建字符串的兩種基本方法。 ```ruby website = "google.com" ``` 這里,字符串字面值被分配給網站變量。 在后臺,Ruby 解釋器創建一個字符串對象。 ```ruby website = String.new "zetcode.com" ``` 這是創建字符串對象的標準方法。 但是,在大多數情況下都使用第一種方法,因為它不太冗長,并且是大多數計算機語言中創建字符串的常用方法。 ```ruby #!/usr/bin/ruby puts "zetcode".upcase puts "zetcode".size puts "zetcode".reverse ``` 在此代碼示例中,我們在字符串字面值上調用三個方法。 對于熟悉 Java,C 和類似語言的人,這可能會令人困惑。 在 Ruby 中,字符串字面值被轉換為可以在其上調用方法的字符串對象。 ```ruby $ ./stringobject2.rb ZETCODE 7 edoctez ``` Output of the example. ## Ruby 字符串方法 Ruby 字符串對象具有可用于處理字符串的有用方法。 我們已經看到了幾種字符串方法,例如`concat`或`eql?`。 ```ruby #!/usr/bin/ruby word = "Determination" puts "The word #{word} has #{word.size} characters" puts word.include? "tion" puts word.include? "tic" puts puts word.empty? word.clear puts word.empty? ``` 我們有一個字符串變量。 提出了四種字符串方法。 ```ruby puts "The word #{word} has #{word.size} characters" ``` `size`方法返回字符串中的字符數。 ```ruby puts word.include? "tion" ``` `include?`方法確定在測試的字符串中是否存在子字符串。 在這種情況下,代碼行返回`true`。 ```ruby puts word.empty? word.clear ``` `empty?`方法檢查字符串是否為空。 它返回布爾值`true`或`false`。 `clear`方法使字符串為空。 ```ruby $ ./basicmethods.rb The word Determination has 13 characters true false false true ``` 輸出。 在下一個示例中,我們將提供適用于字符大小寫的方法。 ```ruby #!/usr/bin/ruby ruby = "Ruby programming language" puts ruby.upcase puts ruby.downcase puts ruby.capitalize puts ruby.swapcase ``` Ruby 有四種字符大小寫方法。 `upcase`方法返回字符串的副本,其中所有字符均大寫。 `downcase`方法返回字符串的副本,其中所有字符均為小寫。 `capitalize`方法返回字符串的副本,其中第一個字符轉換為大寫,其余字符轉換為小寫。 最后,`swapcase`方法返回字符串的副本,其中大寫字母轉換為小寫,反之亦然。 ```ruby $ ./rubylang.rb RUBY PROGRAMMING LANGUAGE ruby programming language Ruby programming language rUBY PROGRAMMING LANGUAGE ``` Output. 接下來,我們介紹兩種 Ruby 字符串方法:`start_with?`和`end_with?`。 這兩個方法均返回布爾值`true`或`false`。 它們分別確定字符串以特定字符串開頭還是結尾。 ```ruby #!/usr/bin/ruby ws1 = "zetcode.com" ws2 = "www.gnome.org" puts ws1.start_with? "www." puts ws2.start_with? "www." puts puts ws1.end_with? ".com" puts ws2.end_with? ".com" ``` 這是上述方法的示例。 ```ruby puts ws1.start_with? "www." ``` 在這里,我們檢查字符串是否以`"www"`開頭。 否,因此控制臺的輸出為布爾值`false`。 ```ruby puts ws1.end_with? ".com" ``` 我們檢查`ws1`字符串變量是否以`".com"`后綴結尾。 確實如此,因此我們在控制臺中看到了一個真實的結果。 ```ruby $ ./startend.rb false true true false ``` Output. 在下面的示例中,我們將處理`inspect`方法。 該方法返回一個原始字符串,該字符串用引號引起來,帶有未解釋的特殊字符。 當我們要檢查什么字符組成字符串時,這很有用。 ```ruby #!/usr/bin/ruby msg = "Jane\t17\nThomas\t23" puts msg puts msg.inspect ``` `inspect`字符串方法的示例。 ```ruby msg = "Jane\t17\nThomas\t23" ``` 這是一個帶有一些特殊字符的字符串。 ```ruby puts msg puts msg.inspect ``` 在第一種情況下,特殊字符被解釋。 字符串部分之間有一個制表符和換行符。 在第二種情況下,我們以原始格式獲取字符串。 ```ruby $ ./inspectmethod.rb Jane 17 Thomas 23 "Jane\t17\nThomas\t23" ``` Output of the example. `chomp`方法返回一個新字符串,其中記錄分隔符已從字符串末尾刪除。 默認的分隔符是換行符(`\n`)。 ```ruby #!/usr/bin/ruby print "Are you sure to download? (Yes/No) " response = gets if (response.downcase == "yes") puts "Downloaded" else puts "Download cancelled" end puts response.inspect ``` 在上面的腳本中,我們從用戶那里得到了輸入。 我們對用戶的反應作出反應。 ```ruby $ ./chomp.rb Are you sure to download? (Yes/No) Yes Download cancelled "Yes\n" ``` 該腳本無法正常運行。 當我們考慮`inspect`返回時,原因就很清楚了。 來自用戶的輸入以回車鍵結束。 換行符也包含在響應變量中。 并且`"yes"`不等于`"yes\n"`。 要更正腳本,我們使用`chomp`方法。 它從變量中刪除換行符。 ```ruby #!/usr/bin/ruby print "Are you sure to download? (Yes/No) " response = gets if (response.downcase.chomp == "yes") puts "Downloaded" else puts "Download cancelled" end puts response.inspect ``` 這是更正的示例。 ```ruby if (response.downcase.chomp == "yes") ``` 在這里,我們在將輸入與`"yes"`字符串進行比較之前先對其進行處理。 `chomp`方法刪除換行符。 ```ruby $ ./chomp.rb Are you sure to download? (Yes/No) Yes Downloaded "Yes\n" ``` 現在該示例正常工作。 ## Ruby 格式化字符串 Ruby 具有格式說明符。 格式說明符確定字符串的外觀。 它以`%`字符開頭。 格式說明符放在單引號或雙引號中。 格式說明符具有以下字段: ```ruby %[flags][field width][precision]conversion specifier ``` 方括號中的字段是可選的。 轉換說明符指定如何將數據轉換為可顯示形式。 ```ruby #!/usr/bin/ruby puts "There are %d oranges in the basket." % 12 puts "There are %d oranges and %d apples in the basket." % [12, 10] ``` 這是一些格式說明符的示例。 ```ruby puts "There are %d oranges in the basket" % 12 ``` 當我們在字符串中使用`%d`表示法時,我們期望此時有一個數字。 `d`是十進制數字的轉換說明符。 該數字在`%`字符后給出。 ```ruby puts "There are %d oranges and %d apples in the basket" % [12, 10] ``` 我們可以在字符串中使用多個格式說明符。 每個字母都以% 字符開頭。 多個值位于`[]`字符之間,并用逗號分隔。 ```ruby $ ./formatspecifiers.rb There are 12 oranges in the basket. There are 12 oranges and 10 apples in the basket. ``` Output of the example. 在下面的示例中,我們將介紹一些基本的轉換說明符。 ```ruby #!/usr/bin/ruby puts "There are %d apples." % 5 puts "I can see %i oranges." % 3 puts "The width of iPhone 3G is %f mm." % 62.1 puts "This animal is called a %s" % "rhinoceros." ``` 我們有整數,浮點數和字符串的轉換說明符。 ```ruby puts "There are %d apples." % 5 puts "I can see %i oranges." % 3 ``` `d`和`i`均可用于整數。 ```ruby puts "The width of iPhone 3G is %f mm." % 62.1 ``` `f`是浮點值的轉換說明符。 默認情況下,浮點數有六個小數位。 ```ruby puts "This animal is called a %s" % "rhinoceros." ``` `s`字符用于字符串。 ```ruby $ ./basicspecifiers.rb There are 5 apples. I can see 3 oranges. The width of iPhone 3G is 62.100000 mm. This animal is called a rhinoceros. ``` Output of the example. 接下來,我們有一個使用格式說明符的實際示例。 ```ruby #!/usr/bin/ruby website = "zetcode.com" website.each_char do |c| print "#{c} has ASCII code %d\n" % c.ord end ``` 在此示例中,我們遍歷字符串的所有字符并將其 ASCII 值打印到終端。 ```ruby website.each_char do |c| print "#{c} has ASCII code %d\n" % c.ord end ``` `each_char`方法將網站字符串的每個字符傳遞到塊,每個周期一個字符,而當前字符存儲在`c`變量中。 我們使用`ord`方法獲得字符的 ASCII 碼,該方法返回一個字符串的序數。 ```ruby $ ./character.rb z has ASCII code 122 e has ASCII code 101 t has ASCII code 116 c has ASCII code 99 o has ASCII code 111 d has ASCII code 100 e has ASCII code 101 . has ASCII code 46 c has ASCII code 99 o has ASCII code 111 m has ASCII code 109 ``` 示例的輸出。 數字可以以多種形式顯示。 轉換說明符可用于格式化數字。 ```ruby #!/usr/bin/ruby # decimal puts "%d" % 300 # hexadecimal puts "%x" % 300 # octal puts "%o" % 300 # binary puts "%b" % 300 # scientific puts "%e" % (5/3.0) ``` 在上面的示例中,我們以十進制,十六進制,八進制,二進制和科學格式打印數字。 ```ruby # hexadecimal puts "%x" % 300 ``` `x`轉換說明符用于將數字轉換為十六進制格式。 ```ruby # binary puts "%b" % 300 ``` `x`轉換說明符用于將數字轉換為二進制格式。 ```ruby $ ./various.rb 300 12c 454 100101100 1.666667e+00 ``` Output. 精度是格式說明符中的一個字段。 指定為小數點后的數字。 對于整數,浮點數和字符串,它具有不同的含義。 與整數一起使用時,它指示要打印的最小位數。 如果數字的位數少于精度,則以零作為前綴。 整數的默認精度為 1,表示不填充零。 與浮點數一起使用時,精度是小數點后顯示的位數。 最后,對于字符串,精度是打印的最大字符數。 ```ruby #!/usr/bin/ruby puts 'Height: %f %s' % [172.3, 'cm'] puts 'Height: %.1f %s' % [172.3, 'cm'] puts "%d" % 16 puts "%.5d" % 16 puts "%s" % "zetcode" puts "%.5s" % "zetcode" ``` 在此示例中,我們將使用`precision`字段。 ```ruby puts 'Height: %f %s' % [172.3, 'cm'] puts 'Height: %.1f %s' % [172.3, 'cm'] ``` 172.3 是浮點數。 如果未指定精度,則小數點后將有 6 個小數位。 在我們的情況下,將有 5 個零。 第二條代碼行中的`.1`是精度。 對于浮點值,它將小數位數減少到 1。 ```ruby puts "%d" % 16 puts "%.5d" % 16 ``` 整數的默認精度為 1。在第二行中,我們指定了精度.5,該精度將 3 個零添加(添加)到 16 個數字中。 ```ruby puts "%s" % "zetcode" puts "%.5s" % "zetcode" ``` 第一行顯示字符串的所有字符。 第二行僅打印其中五個。 刪除兩個字符。 ```ruby $ ./precision.rb Height: 172.300000 cm Height: 172.3 cm 16 00016 zetcode zetco ``` Output. 字段寬度指定要顯示的數據的最小寬度。 它是一個數字,如果存在,則在小數點之前。 如果輸出較短,則用空格填充,并使其右對齊。 如果我們在字段寬度之前放置減號,則它將保持對齊。 如果輸出長于字段寬度,則會完整顯示。 ```ruby #!/usr/bin/ruby puts "%d" % 1 puts "%d" % 16 puts "%d" % 165 puts "%d" % 1656 puts "%d" % 16567 puts "%10d" % 1 puts "%10d" % 16 puts "%10d" % 165 puts "%10d" % 1656 puts "%10d" % 16567 ``` 在第一種情況下,我們打印五個數字而不指定字段寬度。 輸出的寬度等于要顯示的字符數。 在第二種情況下,字段寬度為 10。5 個輸出中的每個輸出的最小長度為 10 個字符。 數字右對齊。 ```ruby puts "%d" % 1 puts "%d" % 16 ``` 我們打印兩個數字。 輸出的寬度分別為 1、2 個字符。 ```ruby puts "%10d" % 1 puts "%10d" % 16 ``` 兩種情況下的長度均為 10 個字符。 這兩個數字以給定的順序填充 9 和 8 空格。 ```ruby $ ./fieldwidth.rb 1 16 165 1656 16567 1 16 165 1656 16567 ``` 我們可以看到,在第二種情況下,數字是右對齊的。 標志限定符修改格式的行為。 `#`標志分別將`0b`,`0`和`0x`前綴添加到二進制,八進制和十六進制格式。 即使精度限制了小數位數,它也會向浮點值添加小數點。 ```ruby #!/usr/bin/ruby puts "%#b" % 231 puts "%#x" % 231 puts "%#o" % 231 puts "%.0e" % 231 puts "%#.0e" % 231 puts "%.0f" % 231 puts "%#.0f" % 231 ``` 在代碼示例中,我們使用`x`標志。 ```ruby puts "%#b" % 231 puts "%#x" % 231 puts "%#o" % 231 ``` 十進制 231 以二進制,八進制和十六進制格式打印。 `#`標志為它們添加前綴。 ```ruby puts "%.0e" % 231 puts "%#.0e" % 231 ``` 在此,`.0`精度替代數字的小數位。 但是,當與`#`標志一起使用時,即使沒有十進制數字,也會顯示小數點。 ```ruby $ ./flags1.rb 0xe7 0b11100111 0347 2e+02 2.e+02 231 231. ``` Output. `+`標志為正的十進制數字添加一個加號。 對于二進制,八進制和十六進制的負數,它將添加一個負號并使用一個絕對值。 ```ruby #!/usr/bin/ruby puts "%d" % 231 puts "%+d" % 231 puts "%d" % -231 puts "%+d" % -231 puts "%b" % -231 puts "%o" % -231 puts "%x" % -231 puts "%+b" % -231 puts "%+o" % -231 puts "%+x" % -231 ``` 演示格式說明符的`+`標志的示例。 ```ruby puts "%d" % 231 puts "%+d" % 231 ``` 通常,正數會省略其符號。 如果要顯示正數的加號,請指定`+`標志。 ```ruby puts "%d" % -231 puts "%+d" % -231 ``` `+`標志對負數無效。 輸出是相同的。 ```ruby puts "%b" % -231 puts "%o" % -231 puts "%x" % -231 ``` 二進制,八進制和十六進制數具有創建負數的自己的方式。 ```ruby puts "%+b" % -231 puts "%+o" % -231 puts "%+x" % -231 ``` 如果我們為這些負數指定`+`標志,則會將數字轉換為其他格式并添加減號。 沒有表示負數的特殊方法。 ```ruby $ ./flags2.rb 231 +231 -231 -231 ..100011001 ..7431 ..f19 -11100111 -347 -e7 ``` Output of the example. 在這里,我們介紹`0`標志和`-`標志。 `0`標志使數字以零而不是空格填充。 `-`標志使輸出左對齊。 ```ruby #!/usr/bin/ruby puts "%010d" % 1 puts "%010d" % 16 puts "%010d" % 165 puts "%010d" % 1656 puts "%010d" % 16567 puts "%-10d" % 1 puts "%-10d" % 16 puts "%-10d" % 165 puts "%-10d" % 1656 puts "%-10d" % 16567 ``` 例。 ```ruby puts "%010d" % 1 puts "%010d" % 16 ``` 數字將用零填充。 ```ruby puts "%-10d" % 1 puts "%-10d" % 16 ``` 小于字段寬度的數字被對齊。 并且`-`標志使其左對齊。 ```ruby $ ./fieldwidth2.rb 0000000001 0000000016 0000000165 0000001656 0000016567 1 16 165 1656 16567 ``` 示例的輸出。 `*`標志可用于精度和寬度。 每當我們使用`*`標志時,我們都必須指定精度或寬度作為參數。 ```ruby #!/usr/bin/ruby puts "%.*f" % [3, 1.1111111] puts "%0*d" % [10, 2] puts "%0*.*f" % [10, 3, 1.1111] ``` *標志的示例。 ```ruby puts "%.*f" % [3, 1.1111111] ``` 在這里,我們將`*`標志用于精度。 第一個數字 3 是精度的參數。 它說 1.1111111 浮點數將只顯示三個小數位。 ```ruby puts "%0*d" % [10, 2] ``` 在此代碼行中,我們使用`*`標志作為寬度。 我們必須在`[]`括號之間添加寬度。 第一個數字是寬度,第二個數字是轉換說明符的值。 ```ruby puts "%0*.*f" % [10, 3, 1.1111] ``` `*`標志可用于寬度和精度。 我們必須在`[]`括號中都指定它們。 ```ruby $ ./flags3.rb 1.111 0000000002 000001.111 ``` Output of the example. Ruby 教程的這一部分介紹了字符串。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看