文字列を操作しようとしています。私の場合、次の文字列があります。
String test ="/mnt/sdcard/Download/images.jpeg|/mnt/sdcard/Download/images.jpeg|/mnt/sdcard/Download/images-1.jpeg|/mnt/sdcard/Download/images-2.jpeg|";
この文字列には、Android エミュレーターの画像の 4 つのパスが含まれています。ご覧のとおり、すべてのパスは「 | 」文字で区切られています。私がやりたいことは十分に単純です。「 | 」文字のないすべてのパスを検索する for ループを作成する必要があり、ループごとに、作成されたパスを削除する必要がありますが、この場合は「 | 」文字を使用します。コードを実装しましたが、何が間違っているのか理解できません。実際、画像パスは正しく削除されますが、「 | 」文字は削除されません。たとえば、最初のループの後、テスト文字列は次のようになります。
|/mnt/sdcard/Download/images.jpeg|/mnt/sdcard/Download/images-1.jpeg|/mnt/sdcard/Download/images-2.jpeg|
先頭に「 | 」文字があるため、正しくありません。ここに私のコードがあります。
for(int i=0; i<=3; i++) {
//find the characters number before you find the first " | " character available
int indexOfStatic = test.indexOf("|");
//this find the string that we want remove from the test string that contains all paths
int indexOfStaticToRemove = test.indexOf("|")+1;
String testPath = test.substring(0, indexOfStatic); //this is the correct path of the image
String testPathToRemove = test.substring(0, indexOfStaticToRemove); //this is the path with the " | " character that we want remove from the test string
Log.i("PATH TO REMOVE",""+testPathToRemove);
//here i remove the path with the " | " character. I use the replaceFirst method because if the "test" string contains two equals paths (how in my example) i want to replace only one at time for avoid crash during the loop
test = test.replaceFirst(testPathToRemove,"");
Log.i("TEST REPLACE",""+test); //Replace the first | with nothing
}
どちらが問題なのかはわかりませんが、実際には難しくないはずです。