找到特定的char并用Java替换它

时间:2016-02-09 16:17:08

标签: java android

我从JSON获得了大约一百个url字符串。例如:

media.life.com/homes/1000000/10000/6500/6404/6404_1625646_**b.jpg**
media.life.com/homes/1000000/10000/6500/6404/6404_189765_**b.jpg**
media.life.com/homes/1000000/10000/6500/6404/6404_162_**b.jpg**
media.life.com/homes/1000000/10000/6500/6404/6404_532535677_**b.jpg**
media.life.com/homes/1000000/10000/6500/6404/6404_1612452_**b.jpg**
media.life.com/homes/1000000/10000/6500/6404/6404_10976562**_b.jpg**

如您所见,这些网址中唯一常见的是结尾“b.jpg”

如何将字符 b 替换为其他字符?

我尝试过这种方法:

public String changeCharInPosition(int position, char ch, String str){

    char[] charArray = str.toCharArray();
    charArray[position] = ch;
    return new String(charArray);
}

这是我打电话的时候:

hs.thumbNailUrl = changeCharInPosition(65, 'l',hs.thumbNailUrl);

b 的位置总是会改变,所以这种方法效率很低。

3 个答案:

答案 0 :(得分:1)

如果你总是只有一个具有该值的字符,你可以使用.replace()来替换该字符。

public static void main(String args[]) {
    String x = new String("amedia.life.com/homes/1000000/10000/6500/6404/6404_1625646_**b.jpg**");
    x = x.replace('b', 'y');
}

<强>输出

amedia.life.com/homes/1000000/10000/6500/6404/6404_1625646 _ ** ** y.jpg

现在,如果您尝试根据字符的索引替换,可以使用StringBuilder并使用子字符串查找b的位置,并通过从总长度中减去b之后的字符数来查找b的位置。

public static void main(String args[]) {
    StringBuilder x = new StringBuilder("amedia.life.com/homes/1000000/10000/6500/6404/6404_1625646_**b.jpg**");
    x.setCharAt(x.length() - 7, 'y');
}

<强>输出

amedia.life.com/homes/1000000/10000/6500/6404/6404_1625646 _ ** ** y.jpg

修改

第三种选择:

这里我们将在'b'的最后一个索引处替换char。

public static void main(String args[]) {
    String x = new String("amedia.life.com/homes/1000000/10000/6500/6404/6404_1625646_**b.jpg**");
    x = x.replace(x.charAt(x.lastIndexOf('b')), 'y');
    System.out.println(x);
}

现在显然你可以遍历并为每个字符串使用一个新字符。

答案 1 :(得分:0)

将您的通话从

更改为changeCharInPosition
hs.thumbNailUrl = changeCharInPosition(65, 'l', hs.thumbNailUrl);

hs.thumbNailUrl = changeCharInPosition(hs.thumbNailUrl.indexOf("b.jpg"),
                                       'l', hs.thumbNailUrl);

答案 2 :(得分:0)

您可以使用String.lastIndexOf(String)来查找另一个String中最后一个String。

e.g。

private String replace(String url, String thumnailUri){
    String toReplace = "**b.jpg**";
    int lastBIndex = url.lastIndexOf(toReplace);
    return url.substring(0, lastBIndex) + thumnailUri;
}

您也可以使用String.replace(String,String),例如

url.replace("**b.jpg**", hs.thumnailUri);