次のパスから17番を取得する効率的な方法は何ですか?Androidサブストリング
/contacts/lookup/1217x31-2BN8629/17/data
それは
substring(path.lastIndexOf('/') - 2, path.lastIndexOf('/'))
で動作します。しかし、それは数10-99のためにハードコードされ、その数は、たとえば3のためであれば、それは/ 3など
次のパスから17番を取得する効率的な方法は何ですか?Androidサブストリング
/contacts/lookup/1217x31-2BN8629/17/data
それは
substring(path.lastIndexOf('/') - 2, path.lastIndexOf('/'))
で動作します。しかし、それは数10-99のためにハードコードされ、その数は、たとえば3のためであれば、それは/ 3など
戻ります最も簡単な、私見、/
文字に応じて文字列を分割し、前の最後の要素を取るために、次のようになります。
String[] parts = str.split("/");
String result = parts[parts.length - 2];
最初に、各操作を1回だけ実行します。 2回目に必要なデータを格納するには、ローカル変数を使用します。
第2:あなたが最後のものを見つけたら、次の '/'文字を探すことができます。
例:
final int lastSlashIndex = path.lastIndexOf('/');
final int nextToLastSlashIndex = path.lastIndexOf('/', lastSlashIndex-1);
path.substring(nextToLastSlashIndex+1, lastSlashIndex);
すべて/あなたの文字列で、そのインデックスを取得し、部分文字列を取得するよりも見つけることができます。 –
索引を2回検索しています。代わりにローカル変数を使用し、一度だけ検索してください。 – dsh
厳密に言えば、これは安全に答えることはできません。なぜなら、あなたが抽出に基づいている代表的な "17"について*何*を指定するのに失敗したからですか?他の多くのケースを見れば、そのことを推測できるかもしれませんが、ルールについてのポイントは、自分が望んでいないものと自分が望んでいないものを区別する必要があることです。 –