速くScalaの練習問題の解答を学びます—第9章のファイルと正規表現
10 ファイルと正規表現
10.1 Scalaコードのセグメントを作成し、ファイル内のローを反転させます(最後のローを最初のローとして、このようにします).
10.2 Scalaプログラムを作成し、タブ付きのファイルから内容を読み出し、各タブをスペースのセットに置き換え、タブで区切られたn列が縦方向に整列したまま、結果を同じファイルに書き込む
10.3 小さなScalaコードを作成し、1つのファイルからコンテンツを読み取り、12より大きい文字数の単語をコンソールに印刷します.単行コードで完成すれば追加のご褒美があります
10.4 Scalaプログラムを作成し、浮動小数点数を含むテキストファイルから内容を読み出し、ファイル内のすべての浮動小数点数の和、平均値、最大値、最小値を印刷します.
10.5 Scalaプログラムを作成し,2のn次方程式とその逆数をファイルに書き込み,指数nは0から20である.列の整列:
10.6 JavaまたはC++プログラムコードの「like this,maybe with」or」のような引用符付き文字列に一致する正規表現を作成します.Scalaプログラムを作成して、あるソースファイルの類似文字列をすべて印刷します.
10.7 Scalaプログラムを作成し、テキストファイルから内容を読み取り、すべての浮動小数点数以外の語法単位を印刷します.正規表現を使用する必要があります.
10.8 Scalaプログラムを作成して、あるページのすべてのimgラベルのsrc属性を印刷します.正規表現とグループ化を使用します.
10.9 Scalaプログラムを作成し、指定されたディレクトリとそのサブディレクトリの合計.classを拡張子とするファイルがどれだけあるかを確認します.
10.10 シーケンス可能なPersonクラスを拡張し、ある人の友人情報を1つのセットで保存できるようにします.Personオブジェクトを作成し、彼らの一部を友人にし、Array[person]をファイルに保存します.この配列をファイルから読み直し、友人関係が完璧かどうかを確認します.
注意、mainで実行してください.スクリプトの実行はシーケンス化できません.
10.1 Scalaコードのセグメントを作成し、ファイル内のローを反転させます(最後のローを最初のローとして、このようにします).
import io.Source
import java.io.PrintWriter
val path = "test.txt"
val reader = Source.fromFile(path).getLines()
val result = reader.toArray.reverse
val pw = new PrintWriter(path)
result.foreach(line => pw.write(line + "
"))
pw.close()
10.2 Scalaプログラムを作成し、タブ付きのファイルから内容を読み出し、各タブをスペースのセットに置き換え、タブで区切られたn列が縦方向に整列したまま、結果を同じファイルに書き込む
import io.Source
import java.io.PrintWriter
val path = "test.txt"
val reader = Source.fromFile(path).getLines()
val result = for ( t <- reader) yield t.replaceAll("\\t"," ")
val pw = new PrintWriter(path)
result.foreach(line => pw.write(line + "
"))
pw.close()
10.3 小さなScalaコードを作成し、1つのファイルからコンテンツを読み取り、12より大きい文字数の単語をコンソールに印刷します.単行コードで完成すれば追加のご褒美があります
import io.Source
Source.fromFile("test.txt").mkString.split("\\s+").foreach(arg => if(arg.length > 12) println(arg))
10.4 Scalaプログラムを作成し、浮動小数点数を含むテキストファイルから内容を読み出し、ファイル内のすべての浮動小数点数の和、平均値、最大値、最小値を印刷します.
import io.Source
val nums = Source.fromFile("test.txt").mkString.split("\\s+")
var total = 0d
nums.foreach(total += _.toDouble)
println(total)
println(total/nums.length)
println(nums.max)
println(nums.min)
10.5 Scalaプログラムを作成し,2のn次方程式とその逆数をファイルに書き込み,指数nは0から20である.列の整列:
1 1
2 0.5
4 0.25
... ...
import java.io.PrintWriter
val pw = new PrintWriter("test.txt")
for ( n <- 0 to 20){
val t = BigDecimal(2).pow(n)
pw.write(t.toString())
pw.write("\t\t")
pw.write((1/t).toString())
pw.write("
")
}
pw.close()
10.6 JavaまたはC++プログラムコードの「like this,maybe with」or」のような引用符付き文字列に一致する正規表現を作成します.Scalaプログラムを作成して、あるソースファイルの類似文字列をすべて印刷します.
import io.Source
val source = Source.fromFile("test.txt").mkString
val pattern = "\\w+\\s+\"".r
pattern.findAllIn(source).foreach(println)
10.7 Scalaプログラムを作成し、テキストファイルから内容を読み取り、すべての浮動小数点数以外の語法単位を印刷します.正規表現を使用する必要があります.
import io.Source
val source = Source.fromFile("test.txt").mkString
val pattern = """[^((\d+\.){0,1}\d+)^\s+]+""".r
pattern.findAllIn(source).foreach(println)
10.8 Scalaプログラムを作成して、あるページのすべてのimgラベルのsrc属性を印刷します.正規表現とグループ化を使用します.
import io.Source
val source = Source.fromFile("D:\\ProgramCodes\\ScalaTest\\src\\test.txt").mkString
val pattern = """<img[^>]+(src\s*=\s*"[^>^"]+")[^>]*>""".r
for (pattern(str) <- pattern.findAllIn(source)) println(str)
10.9 Scalaプログラムを作成し、指定されたディレクトリとそのサブディレクトリの合計.classを拡張子とするファイルがどれだけあるかを確認します.
import java.io.File
val path = "."
val dir = new File(path)
def subdirs(dir:File):Iterator[File]={
val children = dir.listFiles().filter(_.getName.endsWith("class"))
children.toIterator ++ dir.listFiles().filter(_.isDirectory).toIterator.flatMap(subdirs _)
}
val n = subdirs(dir).length
println(n)
10.10 シーケンス可能なPersonクラスを拡張し、ある人の友人情報を1つのセットで保存できるようにします.Personオブジェクトを作成し、彼らの一部を友人にし、Array[person]をファイルに保存します.この配列をファイルから読み直し、友人関係が完璧かどうかを確認します.
注意、mainで実行してください.スクリプトの実行はシーケンス化できません.
import collection.mutable.ArrayBuffer
import java.io.{ObjectInputStream, FileOutputStream, FileInputStream, ObjectOutputStream}
class Person(var name:String) extends Serializable{
val friends = new ArrayBuffer[Person]()
def addFriend(friend : Person){
friends += friend
}
override def toString() = {
var str = "My name is " + name + " and my friends name is "
friends.foreach(str += _.name + ",")
str
}
}
object Test extends App{
val p1 = new Person("Ivan")
val p2 = new Person("F2")
val p3 = new Person("F3")
p1.addFriend(p2)
p1.addFriend(p3)
println(p1)
val out = new ObjectOutputStream(new FileOutputStream("test.txt"))
out.writeObject(p1)
out.close()
val in = new ObjectInputStream(new FileInputStream("test.txt"))
val p = in.readObject().asInstanceOf[Person]
println(p)
}
Blog URL:http://www.ivanpig.com/blog/?p=478