1

次のような URL があります: " http://www.thisIsMyLink.com/afAFFgsfFGsgsdfgds.jpg "

問題は、「.jpg」の直前の URL の末尾に「_s」を追加する必要があることです。だから私が必要とするのはこれです:http://www.thisIsMyLink.com/afAFFgsfFGsgsdfgds_s.jpg

次のように、特定の文字を文字列内に配置する方法を 1 つ見つけました。

NSMutableString *mu = [NSMutableString stringWithString:myUrl];
[mu insertString:@"_s" atIndex:5];

これにより、文字列内の 5 番目の文字に「_s」が追加されます。問題は、「.jpg」の前にある識別子のためにリンクの長さが毎回わからないことです。そのため、必要なのは常に「_s」を最後の4文字前に配置して表示することです「.jpg」の直前。

どうやってやるの?

私の投稿を読んでくれてありがとう:)

4

5 に答える 5

4

これはどうですか:

NSMutableString *mu = [NSMutableString stringWithString:myUrl];
[mu insertString:@"_s" atIndex:[mu length] - 4];

ただし、[mu length]常に >= 4 であることを確認する必要があります。

それを行う賢い方法があるかもしれませんが、元の URL を取得する方法を指定しません。1 つのオプションはstringWithFormat、文字列をモジュール化して構築するために使用します。

于 2012-07-26T11:46:06.757 に答える
3

これは、任意の拡張子 (.jpeg など) で機能する別のものです。

NSString *test = @"www.thisIsMyLink.com/afAFFgsfFGsgsdfgds.jpg";
NSString *ext = [test pathExtension]; // This is .jpg in this case
NSString *out = [[[test stringByDeletingPathExtension] stringByAppendingString:@"_s"] stringByAppendingPathExtension:ext];

したがって、ここでのロジックは次のとおりです。

  1. パスの拡張子を取得する
  2. 拡張機能を削除する
  3. 文字列を追加
  4. 拡張子を追加

そうすれば、仮定に頼ることを避けることができます (常に 3 文字の拡張子があるなど)。最悪のシナリオでは、拡張子がまったくなく、末尾に文字列が追加されたパスで終了します。これが役に立ったことを願っています。

于 2012-07-26T11:49:55.573 に答える
1

これを試してください:

[mu insertString:@"_s" atIndex:[mu length] - 3];

未テスト。

于 2012-07-26T11:46:04.500 に答える
1

「.jpg」の最後のインスタンスを「_s.jpg」に置換する大文字と小文字を区別しない。これにより、何らかの理由で「.jpg」が URL の別の場所にある場合に、URL マングリングが回避されます。

NSString *extension = @".jpg";
NSMutableString *mu = [NSMutableString stringWithString:myUrl];
[mu insertString@"_s" atIndex[[[url lowercaseString] rangeOfString:extension options:NSBackwardsSearch].location];
于 2012-07-26T11:59:20.333 に答える
0

NSStringlength文字列の長さを返すメソッドが呼び出されます。エクステンションの長さ (4) を引くと、開始インデックスが得られます。

于 2012-07-26T11:46:33.200 に答える