Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在字符串数组中操作子字符串/字符_Java_Arrays - Fatal编程技术网

Java在字符串数组中操作子字符串/字符

Java在字符串数组中操作子字符串/字符,java,arrays,Java,Arrays,我有一个JAVA字符串数组,如: String[] fruits = {"banana", "apple", "orange"}; 如何访问字符串成员的字符/子字符串?例如,我想显示第一个成员“banana”的第二个字符,即“a”,并将其更改为“b”。如果我将一个新字符串设置为等于我的数组成员,请执行以下操作并将新字符串分配给我的数组列表: string manipulate = fruits[0]; //do manipulation on 'manipulate' then: fruits

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

String[] fruits = {"banana", "apple", "orange"};
如何访问字符串成员的字符/子字符串?例如,我想显示第一个成员“banana”的第二个字符,即“a”,并将其更改为“b”。如果我将一个新字符串设置为等于我的数组成员,请执行以下操作并将新字符串分配给我的数组列表:

string manipulate = fruits[0];
//do manipulation on 'manipulate' then:
fruits[0] = manipulate;
或者有一个内置的或更好的方法


谢谢

Java的
字符串是不可变的,这意味着您不能更改它们。相反,正如@AshishSingh在注释中所指出的,您需要创建一个新的
字符串

public String manipulate(String oldStr) {
    StringBuilder newStr = new StringBuilder(oldStr);
    newStr.setChar(1, 'b')
    return newStr.toString();
}
只要这样做:

fruits[0] = manipulate(fruits[0]);
这里,
operate()
是一个函数,它接受一个输入字符串,根据需要对其进行操作,然后
返回被操作的
字符串

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

我使用的是
StringBuilder
,它是一个可变对象,因此可以重新分配元素。我将第二个字符设置为“b”,然后
返回新的
字符串

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

public String manipulate(String oldStr) {
    StringBuilder newStr = new StringBuilder(oldStr);
    newStr.setChar(1, 'b')
    return newStr.toString();
}
也就是说,您不能更改
字符串中的字符,因为在
Java

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

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

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

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

char charArray[] = fruits[index].toCharArray();
charArray[2] = 'b';
修改字符数组中的元素后,将其放回
数组中

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

现有的
水果[索引]
将被新的
字符串替换

这就是您可以做到的

public String manipulate(String oldStr) {
    StringBuilder newStr = new StringBuilder(oldStr);
    newStr.setChar(1, 'b')
    return newStr.toString();
}
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();

fruits[index].charAt(index)
?有一件事是肯定的,要更新/替换字符串引用,您必须创建一个新的
string
object您的问题是什么,数组或字符串操作或对象引用或…?@AshishSingh不一定,因为您可以定义一个根据需要操作字符串的函数,然后将结果[0]分配给它的操纵版本。@Adi219在该字符串函数中,您将返回一个新的
string
对象,因为众所周知,
string
对象是不可变的,不能更改/操纵的。这个答案与@arnauddenoylle?的答案有什么区别,不幸的是,他首先发布了。
StringBuilder
不会对现有的
String
值进行变异。然而,
StringBuilder
本身就是可变对象。@AwanBiru我从来没有说过它会变异现有的
String
s;我说它允许可变字符串(这里我使用的是单词string的英语意思,而不是Java意思)。不过,我将对其进行编辑以使其更清晰。
StringBuilder.toString()
将生成新的
String