Java处理字符串数组中的子字符串/字符

时间:2018-08-08 08:15:36

标签: java arrays

我在JAVA中有一个字符串数组,例如:

String[] fruits = {"banana", "apple", "orange"};

如何访问字符串成员的字符/子字符串?例如,我想显示第一个成员“香蕉”的第二个字符“ a”,并将其更改为“ b”。如果我要使一个新的字符串等于数组成员,请执行以下操作并将新字符串分配给我的数组列表,如下所示:

string manipulate = fruits[0];
//do manipulation on 'manipulate' then:
fruits[0] = manipulate;

还是有内置的或更好的方法?

谢谢

4 个答案:

答案 0 :(得分:2)

Java的String是不可变的,这意味着您无法更改它们。相反,正如@AshishSingh在评论中指出的那样,您需要创建一个新的String

只需执行以下操作:

fruits[0] = manipulate(fruits[0]);

在这里,manipulate()是您的函数,它使用输入字符串,根据需要对其进行操作,然后return对被操纵的string进行操作。

public String manipulate(String oldStr) {
    StringBuilder newStr = new StringBuilder(oldStr);
    newStr.setChar(1, 'b')
    return newStr.toString();
}

我正在使用StringBuilder,它是一个可变对象,因此可以重新分配元素。我将第二个字符设置为'b',然后将return设置为新的String

答案 1 :(得分:1)

Java String对象是不可变的,因此您不能修改其内部值。

char charArray[] = fruits[index].toCharArray();
charArray[2] = 'b';

修改字符数组中的元素后,将其放回fruits数组中。

fruits[index] = String.valueOf(charArray);

现有的fruits[index]将被新的String取代。

答案 2 :(得分:0)

如果要访问字符串的特定字符,请使用String.charAt(index)

也就是说,您无法更改String中的字符,因为Java中的Strings are immutable

如果要更改给定String中的字符,则实际上必须创建一个新的String

示例:

String[] fruits = {"banana", "apple", "orange"};

String banana = fruits[0];
char[] chars = banana.toCharArray();
chars[0] = 'c';
chars[4] = 'd';
String newStr = String.valueOf(chars);
System.out.println(newStr);

输出:

canada

答案 3 :(得分:0)

这是您的操作方式。

int indexOfArray=1;
int indexOfString=1;
char charToChange='x';          
String fruits[] = {"banana", "apple", "orange"};            

StringBuilder manipulate = new StringBuilder(fruits[indexOfArray]);
manipulate.setCharAt(indexOfString, charToChange);
fruits[indexOfArray]=manipulate.toString();