[RUBY] Résumé des CR, LF, CRL de la méthode ouverte

J'ai fait une erreur sur le mode, donc je vais le laisser comme un mémorandum.

Quelle est la méthode ouverte?

Grosso modo Une méthode qui ouvre un fichier texte externe et vous permet de lire et d'écrire en utilisant le mode.

Par exemple, disons "example.txt" écrit comme suit dans un fichier texte externe.

C'est Tomosuke.

Ensuite, ouvrez le fichier dans Ruby en utilisant la méthode open et écrivez-le.

f = File.open("example.txt","a")

s = f.write ("Mon hobby est la guitare.") Ajouter à # example.txt f.close

À la suite de l'exécution de ce qui précède

$ more example.txt

C'est Tomosuke. # Texte avant exécution $ ruby example.rb $ more example.txt C'est Tomosuke. Mon passe-temps est la guitare. # Texte après exécution

Ce sera.

Comment utiliser la méthode ouverte

.open ("chemin vers le texte", (mode =) mode))

mode La description
"r" Ouvrez le fichier en mode lecture(Il s'agit de la valeur par défaut si elle n'est pas spécifiée)
"w" Ouvrir le fichier en mode écriture
"a" Ouvrez le fichier en mode écriture et ajoutez celui écrit à la fin
"rt" Lire CR, LF, CRLF comme LF
"rb" CR, LF, CRLF sont tous lus tels quels.
"wb" LF est écrit comme LF tel quel.

Pour "r, w, a", "r +, w +, a +" s'ouvrira en mode alphabétisation.

À propos du mode "rt, rb, wb"

Ce que j'ai mal compris, c'est que je pensais que rt était un mode, «r» de «rt» est lu, «t» est lu comme CR / LF / CRLF du caractère de saut de ligne comme LF Cela signifie que c'était significatif séparément. Donc, si vous assemblez que "b" signifie "lisez le code de saut de ligne tel quel"

mode La description t b
r Mode lecture Lire CR, LF, CRLF comme LF CR, LF, CRLF sont tous lus tels quels.

Viendra dire. Je pense que c'est facile à retenir.

Qu'est-ce qu'un code de saut de ligne?

Un personnage qui émet une commande pour casser une phrase sur un ordinateur CR, LF, CRLF, le code de saut de ligne est différent. CR est \ n, LF est\ r \et CRLF est \ r \ n.

Chaque comportement

Regardez le comportement de rt, r, (none) pour trois types de texte de code Est-ce que «rt» lit CR, LF ou CRLF comme LF? Et s'il n'y a pas de t En premier lieu, découvrez ce qui se passe si rien n'est ajouté. Le texte fait référence à ce qui suit.

$ od -c example_lf.txt
0000000    h   e   l   l   o       w   o   r   l   d   !  \n   h   e   l
0000020    l   o       w   o   r   l   d   !                            
0000031
$ od -c example_cr.txt 
0000000    h   e   l   l   o       w   o   r   l   d   !  \r   h   e   l
0000020    l   o       w   o   r   l   d   !                            
0000031
$ od -c example_crlf.txt
0000000    h   e   l   l   o       w   o   r   l   d   !  \r  \n   h   e
0000020    l   l   o       w   o   r   l   d   !                        
0000032

1. Pour «rt»

Code source

met "----- Code de saut de ligne LF -----" File.open("example_lf.txt") do |text| text.each_line do |line| p line end end met "----- Code de saut de ligne CR -----" File.open("example_cr.txt") do |text| text.each_line do |line| p line end end met "----- Code de saut de ligne CRLF -----" File.open("example_crlf.txt") do |text| text.each_line do |line| p line end end

Le résultat de sortie est

$ ruby example_1.rb

----- Code de saut de ligne LF ----- "hello world!\n" "hello world!" ----- Code de saut de ligne CR ----- "hello world!\n" "hello world!" ----- Code de saut de ligne CRLF ----- "hello world!\n" "hello world!"

2. Pour «r»

Code source

met "----- Code de saut de ligne LF -----" File.open("example_lf.txt","r") do |text| text.each_line do |line| p line end end met "----- Code de saut de ligne CR -----" File.open("example_cr.txt","r") do |text| text.each_line do |line| p line end end met "----- Code de saut de ligne CRLF -----" File.open("example_crlf.txt","r") do |text| text.each_line do |line| p line end end

Résultat de sortie

$ ruby example_2.rb

----- Code de saut de ligne LF ----- "hello world!\n" "hello world!" ----- Code de saut de ligne CR ----- "hello world!\rhello world!" ----- Code de saut de ligne CRLF ----- "hello world!\r\n" "hello world!"

3. En cas de "(aucun)"

Code source

met "----- Code de saut de ligne LF -----" File.open("example_lf.txt") do |text| text.each_line do |line| p line end end met "----- Code de saut de ligne CR -----" File.open("example_cr.txt") do |text| text.each_line do |line| p line end end met "----- Code de saut de ligne CRLF -----" File.open("example_crlf.txt") do |text| text.each_line do |line| p line end end

Résultat de sortie

$ ruby example_3.rb

----- Code de saut de ligne LF ----- "hello world!\n" "hello world!" ----- Code de saut de ligne CR ----- "hello world!\rhello world!" ----- Code de saut de ligne CRLF ----- "hello world!\r\n" "hello world!"

Les références

https://www.buildinsider.net/language/rubytips/0019 https://docs.ruby-lang.org/ja/latest/method/Kernel/m/open.html

Recommended Posts

Résumé des CR, LF, CRL de la méthode ouverte
Résumé du réglage de l'heure au Japon et de la méthode d'affichage
Résumé des méthodes de lecture de fichiers pour chaque format de fichier Java
vue d'ensemble du fichier jar
Résumé sur la sécurité de l'information
Résumé de l'utilisation de FragmentArgs
définition de la méthode ruby
[Ruby] Résumé des définitions de méthode
Résumé de l'utilisation de DBFlow
Résumé du support Java 2018
Récapitulatif des valeurs renvoyées par la méthode des caractéristiques Spliterator #java