10

から接尾辞を削除しようとすると、接尾辞filenameだけが残りますが、これはまさに私が望んでいるものではありません。

ここで私が間違っていること(いくつのこと):

let myTextureAtlas = SKTextureAtlas(named: "demoArt")

let filename = (myTextureAtlas.textureNames.first?.characters.split{$0 == "."}.map(String.init)[1].replacingOccurrences(of: "\'", with: ""))! as String

print(filename)

pngこれは、全体の中で最も鈍い部分であるプリントです。

4

10 に答える 10

24

サフィックスがパスの拡張子を意味する場合、これには次の方法があります。

let filename = "demoArt.png"
let name = (filename as NSString).deletingPathExtension
// name - "demoArt"
于 2019-10-17T12:21:47.320 に答える
8

iOS 配列では 0 から始まり、拡張子のないファイル名が必要なため、 を使用して文字列を分割しまし.た。名前は最初のオブジェクトに保存され、拡張子は 2 番目のオブジェクトに保存されます。

簡単な例

let fileName = "demoArt.png"
let name = fileName.characters.split(".").map(String.init).first
于 2016-10-06T05:08:35.863 に答える
5

@Swift 4と混同すると、これを行うことができます:

let fileName = "demoArt.png"
// or on your specific case:
// let fileName = myTextureAtlas.textureNames.first

let name = String(fileName.split(separator: ".").first!)
print(name)

さらに、ラップも解除する必要がありますfirstが、問題を解決するためにサンプル コードを複雑にしたくありませんでした。

ところで、私も最近これが必要だったので、事前に知っている特定の接尾辞を削除したい場合は、次のようにすることができます:

let fileName = "demoArt.png"
let fileNameExtension = ".png"

if fileName.hasSuffix(fileNameExtension) {
    let name = fileName.prefix(fileName.count - fileNameExtension.count)
    print(name)
}
于 2017-12-07T10:46:44.913 に答える