Java在字符串数组中操作子字符串/字符
我有一个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
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
JavaString
对象是不可变的,因此不能修改其内部值
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
。