2017-01-06 8 views
1

次のパスから17番を取得する効率的な方法は何ですか?Androidサブストリング

/contacts/lookup/1217x31-2BN8629/17/data 

それは

substring(path.lastIndexOf('/') - 2, path.lastIndexOf('/')) 

で動作します。しかし、それは数10-99のためにハードコードされ、その数は、たとえば3のためであれば、それは/ 3など

+0

すべて/あなたの文字列で、そのインデックスを取得し、部分文字列を取得するよりも見つけることができます。 –

+1

索引を2回検索しています。代わりにローカル変数を使用し、一度だけ検索してください。 – dsh

+1

厳密に言えば、これは安全に答えることはできません。なぜなら、あなたが抽出に基づいている代表的な "17"について*何*を指定するのに失敗したからですか?他の多くのケースを見れば、そのことを推測できるかもしれませんが、ルールについてのポイントは、自分が望んでいないものと自分が望んでいないものを区別する必要があることです。 –

答えて

3

戻ります最も簡単な、私見、/文字に応じて文字列を分割し、前の最後の要素を取るために、次のようになります。

String[] parts = str.split("/"); 
String result = parts[parts.length - 2]; 
2

最初に、各操作を1回だけ実行します。 2回目に必要なデータを格納するには、ローカル変数を使用します。

第2:あなたが最後のものを見つけたら、次の '/'文字を探すことができます。

例:

final int lastSlashIndex = path.lastIndexOf('/'); 
final int nextToLastSlashIndex = path.lastIndexOf('/', lastSlashIndex-1); 
path.substring(nextToLastSlashIndex+1, lastSlashIndex);