2017-04-15 17 views
0

特定の文字の後に文字列の残りの部分を削除する方法を知りたかったのですが。私は文字列の出現を置き換える方法を知っていますが、特定の文字の後に文字列の残りの部分をどのように削除するのか分かりません。例特定の文字の後に残りの文字列を削除する

let names = ["Tommy-normal", "Bob-fat", "Jack-skinny", "Rob-obese"] 
for x in names { 
print(x.replacingOccurrences(of: "-", with: " ")) 

}

代わりに、私は後だけ来る文字列の残りの部分を削除したい -ので、それだけでトミーをプリントアウトし、ボブジャックおよびRob

助けていただければ幸いです。

+0

はのインデックスを探しますその文字は、そのインデックスまでプレフィックスをとります。 – Sulthan

+0

サンプルコードを提供できるのであれば、本当に感謝します。それはあなたのやり方です。 –

答えて

2

可能な解決策は、あなたが配列に分割し、以下のように最初の要素を取ることができる閉鎖

var names = ["Tommy-normal", "Bob-fat", "Jack-skinny", "Rob-obese"] 

names = names.map { string -> String in 
    if let range = string.range(of: "-") { 
     return string.substring(to: range.lowerBound) 
    } 
    return string 
} 

それとも

names = names.map { string -> String in 
    if let index = string.characters.index(of: "-") { 
     return string.substring(to: index) 
    } 
    return string 
} 
+0

ヴァディアン、ありがとうございます。あなたはスルタンが提供したようにそれをする方法を知っていますか?その文字のインデックスを見つける場所では、そのインデックスまで接頭辞を取る –

+0

それは(2番目の例)実際にスルタンが提案した方法です。 – vadian

+0

ああ大丈夫です。今私はそれをする2つの方法を知っています。 :) –

0

mapです:

var names = ["Tommy-normal", "Bob-fat", "Jack-skinny", "Rob-obese"] 

for name in names { 
let arr = name.components(separatedBy: "-") 
     print(arr[0]) 
} 

プリント:

トミー

ボブ

ジャック

ロブ

0

あなたはこの試みることができる:言葉で始まる場合は注意してください

 
let names = ["Tommy-normal", "Bob-fat", "David", "Jack-skinny", "Rob-obese"]; 

for (let name of names) { 

    let index = name.indexOf("-"); 

    if (index >= 0) name = name.substring(0, index); 

    console.log(name); 
} 

を " - "。

私はこれがあなたを助けてくれることを願っています!

0

サルタンの提案(vadianの2番目のアプローチ)を使用したいが、少し一般的なものにしたい場合は、文字列の最初の部分を区切り文字まで抽出してから使用することができます

:あなたは、名前の一部と「形態学」の部分でタプルにあなたの元の配列をマップするコードを書くことができ

firstParts = ["Tommy", "Bob", "Jack", "Rob"] 

:結果を与える

func firstPart(of aString: String, separator: String) -> String { 
    if let range = aString.range(of: separator) { 
    return aString.substring(to: range.lowerBound) 
    } 
    return aString 
} 



let names = ["Tommy", "Bob-fat", "Jack-skinny", "Rob-obese"] 
let firstParts: [String] = names.map { 
    firstPart(of: $0, separator: "-") 
} 
print("firstParts = \(firstParts)") 

私はコードが欠落しているサフィックスを取り扱うことを確認するために、「トミー・ノーマル」の「-normal」の部分を削除したデータの私のバージョン、で

let tuples = names 
    .map{$0.components(separatedBy: "-")} 
    .map{(name:$0[0], morphology: $0.count > 1 ? $0[1] : "unkown morphology")} 

tuples.forEach{ print($0.name + " is " + $0.morphology) } 

、私が取得:

Tommy is unkown morphology 
Bob is fat 
Jack is skinny 
Rob is obese 
関連する問題