3-2. 文字(Character)


このセクションでは、文字に関する項目について説明します.文字列が複数の文字で構成されていると考えると便利です.

テキスト操作


Stringの各Character値には、
  • 文字列およびforループでアクセスできます.
  • for character in "Dog" {
    	print(character)
    }
    
    //D
    //o
    //g
    //다음 순서대로 문자열 속 문자를 출력하게 된다.
  • 文字列テキストの場合は、個別のCharacterタイプの定数または変数を作成できます.
  • let someString : Character = "!"
    // 단독 문자열 리터럴에 대해서는 문자 타입으로 초기화가 가능하다.
  • String値は、初期化係数がCharacter値を伝達する配列で生成することができる.
  • let catCharacter : [Character] = ["C", "a", "t"]
    let catString = String(catCharacter)
    print(catString)
    //Cat 을 출력하게 된다.
    //문자의 배열을 문자열 타입 전환 시 이를 유추하여 문자열로 반환한다.

    文字列と文字の関連付け

  • String値は、プラス記号(+)で接続して新しいStringを生成できます.
  • let someString = "Some String"
    let anyString = " any String"
    let new = someString + anyString
    //new는 "Some String any String 문자열 리터럴을 가지게 된다.
  • に存在するString変数では、加算代入演算子(+=)を使用してString値を接続できます.
  • var someString = "Some String"
    let anyString = " any String"
    someString += anyString
    //위와 동일한 결과를 나타내준다.
  • Stringタイプのappend()メソッドを使用して、String変数にCharacter値を追加できます.
  • let someString : Character = "!"
    var anyString : String = "Hello world"
    anyString.append(someString)
    //"Hello world!"를 값으로 가지게 된다.

    文字列の挿入


    挿入文字列は、定数、変数、およびテキストに含まれる値の式をブレンドして新しいStringを作成します.これは、文字列文字にスラッシュとカッコを付けることで伝わります.文字の中で演算で伝えることもできます.
    let someNumber : Int = 1
    let message : String = "\(someNumber) is my answer!"
    let message2 : String = "\(someNumber*2) is my new answer!"
    
    //이 경우 메세지는 1 is my answer!를 가지게 된다.
    //아래는 연산 후 2 is my answer!를 가진다.

    文字列へのアクセスと変更


    各String値
  • は、文字列内の各Characterの位置に対応する.インデックス・インデックス・タイプがあります.startIndex Propertyを使用してStringの最初のCharacterにアクセスします.endIndex propertyは最後の文字にアクセスできます.Stringが空の場合、両方の値は同じです.Stringメソッドインデックス(before:)とインデックス(after:)を使用して、所与のインデックスの前後にアクセスできます.指定したインデックスからリモートインデックスにアクセスするには、index(:offsetBy:)メソッドも使用できます.次の例を参照してください.
  • let someString = "Some String!"
    someString[someString.startIndex]
    //S를 리턴한다.
    //someString의 인덱스로 접근하므로 가장 첫 인덱스 값인 S를 반환해준다.
    
    someString[someString.index(before: someString.endIndex)]
    //!
    //someString에서 마지막 인덱스를 리턴한다.
    
    someString[someString.index(after: someString.startIndex)]
    // o를 리턴한다.
  • 文字列の特定のインデックスに文字を挿入するにはinsert(at:)メソッドを使用し、他の文字列の内容を特定のインデックスに挿入するにはinsert(contentsOf:at:)メソッドを使用します.
  • var welcome = "Hello"
    welcome.insert("!", at: welcome.endIndex)
    //이렇게 하게되면 "Hello!"를 리턴하게 된다.
    
    welcome.insert(contentsOf: "there", at: welcome.index(before: welcome.endIndex))
    //이렇게 해주게 되면 "hello there!"를 반환해준다.
  • 文字列から特定のインデックスの文字を削除するには、remove(at:)メソッドを使用します.特定の範囲の文字列の一部を削除するには、removeSubrange(:)メソッドを使用します.
  • welcome.remove(at: welcome.index(before: welcome.endIndex))
    //이렇게 하면 "hello there"를 반환해준다. 가장 마지막 인덱스 값인 !가 사라져있다.
    
    let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex
    //반 닫힘 연산자를 이용하여 다음과 같이 범위를 인덱스 범위를 지정해준다.
    welcome.removeSubrange(range)
    //"hello"를 반환하게 된다.

    部分文字列

  • 文字列を必要なインデックスサイズで分割し、ユーザーが必要とする新しい文字列に初期化できます.
  • let someString = "Hello, world"
    let index = someString.firstIndex(of: ",") ?? greeting.endIndex
    let beginning = greeting[..<index]
    //다음과 같이 처음 , 가 나오는 인덱스를 범위로 잡기 위해 firstIndex(of:)메소드를 사용했다.
    //그리고 난 후 beginning이라는 상수를 해당 인덱스 앞까지의 문자열 리터럴로 초기화해주었다
    
    let newString = String(beginning)
    //그리고 난 결과물을 String의 인스턴스로 최종 변환해주어야 한다.

    文字列の比較

  • 文字列は、同じ演算子とは異なる演算子を使用して比較されます.
  • let a = "Hello"
    let b = "world"
    
    if a == b {
    	print(a)
    }
    
    //다음과 같이 연산자를 통해서 문자열의 비교여부를 참, 거짓으로 판별 가능하다.
    hasPrefix(:)とhasSuffix(:)のメソッドを呼び出して、
  • 接頭辞と接尾辞の同等性を比較することができる.Stringタイプのパラメータを受け入れ、ブール値を返します.
  • let acting = [
    "Act1. romeo",
    "Act1. Juliet",
    "Act1. Room"
    ]
    
    var act1SceneCount = 0
    
    for scene in acting {
    	if scene.hasPrefix("Act1.") {
        	act1SceneCount += 1
        }
    }
    
    //다음과 같이 하면 최종 act1SceneCount변수는 3의 값을 지니게 된다.
    
    var romeoCount = 0
    
    for scene in acting {
    	if scene.hasSuffix("romeo") {
        	romeoCount += 1
        }
    }
    
    //다음과 같이 하게 된다면 최종 1을 지니게 된다.