0

txt歌詞とコードを含むファイルをChordPro形式に、またはその逆に変換しようとしています。そのようなもの:

G                   Em
I heard there was a secret chord

G                        Em
that David played and it pleased the Lord

次のようになります。

[G]I heard there was [Em] a secret chord

[G] that David played and [Em] it pleased the Lord

現在NSDictionary、キー値 (キー E 値 [E] など) を使用しており、これをベースとしてファイルから文字列を変換しています。NSString の複数の文字グループを置き換えるstringByReplacingStringsFromDictionaryから自己定義されたメソッドを使用しています。

実際に和音を含む (歌詞を含まない) 行を変換する場合にのみ、これを行う必要があります。たとえば、に変換Davidしたくありません[D]avid

これを行う最善の方法は、行にコードとして識別されないものが含まれているかどうかを確認し、含まれている場合はスキップすることだと思いました. しかし、この方法で (または他のコレクション)NSStringに対してどのようにテストできますか?NSDictionary

4

2 に答える 2

0

つまり、空白で区切られた単語であり、行に単語が含まれていないか、和音として認識されない単語が含まれている場合、それはそのまま残りますが、それ以外の場合は、それらを角括弧で囲み、元の位置に挿入します以下の行に?

単語で検索するので、既知のコードをNSSet. 次に、 を参照しNSStringますcomponentsSeparatedByCharactersInSet:newlineCharacterSet改行と改行にこだわらずに、 を使用して行を分割します。を使用してwhitespaceCharacterSet、各行の単語のリストを取得します。それらをセットに対してチェックすると、決定ロジックが完了します。

次に、 の順次呼び出しを使用してrangeOfString:options:range:、3 番目のパラメーターを変更しながら、すべての空白を破棄する前に和音の文字位置を復元できます。

和音の完全なリストを編集する可能性が低い場合は、進行する賢明な方法は、たとえば、単語の 50% 以上が和音として認識される行、または短縮されている行をコード ラインとしてマークすることです。空白を削除すると、十分な比率で長さになります。

于 2012-10-16T16:40:17.813 に答える
0

そのために NSDictionary を用意する必要はありません。コード名を含む NSString 変数の[NSString stringWithFormat:@"[%@]", chord]場所を使用して文字列を作成するだけです。chord

この場合、ディクショナリは小さく、害はありませんが、1 つの単純な操作 (文字列を括弧で囲む) から推測できるデータでディクショナリを埋めるのは無意味です。

于 2012-10-16T16:12:15.613 に答える