字符串操作java

字符串操作java,java,string,Java,String,所以我经常使用这个网站,但我找不到答案。。。 如何操作较大字符串中的特定字符/字符串。我试图使用string.substring(pos,amount),但是当我尝试在循环中使用它时,我得到了一个字符串索引错误。 例如,我如何从字符串“abcdefg”中删除[4]处的“e”或仅大写“cde”?很抱歉,在我的问题中没有正式的代码,这主要是一个概念性的东西。多谢各位 谢谢你的建议,我正试图回答这个问题: 编写一个只接受字母字符串作为输入的程序,并用 每三个字母大写,从第二个字母开始,所有其他字母小写

所以我经常使用这个网站,但我找不到答案。。。 如何操作较大字符串中的特定字符/字符串。我试图使用string.substring(pos,amount),但是当我尝试在循环中使用它时,我得到了一个字符串索引错误。 例如,我如何从字符串“abcdefg”中删除[4]处的“e”或仅大写“cde”?很抱歉,在我的问题中没有正式的代码,这主要是一个概念性的东西。多谢各位

谢谢你的建议,我正试图回答这个问题: 编写一个只接受字母字符串作为输入的程序,并用 每三个字母大写,从第二个字母开始,所有其他字母小写

使用此代码:

public class Test {
    public static void main(String[] arguments){
        Scanner fish = new Scanner(System.in);      
        String a = fish.nextLine();
        int len=a.length();
        for (int i = 1; i < len; i += 3){
            String z = a.substring(i, 1);
            String q = a.substring(i + 1);
            a = z.toUpperCase() + q;
        }
        System.out.println(a);
    }
}
公共类测试{
公共静态void main(字符串[]参数){
扫描器fish=新扫描器(System.in);
字符串a=fish.nextLine();
int len=a.length();
对于(int i=1;i
不幸的是,要实现您的目标,没有简单的方法。子字符串不用于替换。例如,某些语言允许您执行以下操作:

str.substring(2,3).toUpperCase();

Java不是这样工作的。如果您正在寻找类似的东西,那么最好编写一个小型函数库,该函数库接受字符串和坐标并手动完成工作。它没有被烘焙到字符串类中。看看字符串类中已经烘焙了哪些内容!它不需要只有一小部分用户会使用的更多功能。

字符串本身是一个不可变的类,因此您无法对其进行修改。当您进行修改时,将返回一个新对象。。。但这并不总是操作字符串的最佳方式(就性能而言),尤其是当您有一个大字符串时

Java还有其他一些类,如StringBuffer和StringBuilder,它们公开了更多的字符串操作操作。以下是一个片段:

`public String manipulateStr(String sourceStr) {
    StringBuffer sb = new StringBuffer(sourceStr);
    sb.delete(5,7); // Delete characters between index 5-7
    sb.insert(10, "<inserted str>"); // Insert a new String
    return sb.toString();
}`
`publicstringmanipulator(stringsourcestr){
StringBuffer sb=新的StringBuffer(sourceStr);
sb.delete(5,7);//删除索引5-7之间的字符
sb.insert(10,“”;//插入新字符串
使某人返回字符串();
}`
希望以上内容有所帮助。

根据Java API,这可能是一个不错的选择:

将此字符串中与给定正则表达式匹配的每个子字符串替换为给定替换

这似乎可以满足您的需求,因为您可以执行以下操作:

str.replace('e', ''); // remove 'e' from the string, or
str.replaceAll("cde", "CDE");
大多数人使用
replaceAll()
的问题在于,第一个参数不是文本
字符串
,而是正则表达式,它被解释并用作要匹配的模式


这只是一个简单的示例,但是使用
replace()
replaceAll()
可以有效地满足您的需要。即使它不是最有效或最容易写的。

如果您知道要删除的内容,请说出字母“e”,但您不知道它在字符串中的位置,您可以使用

stringName.indexOf("e");
它将返回字符串“e”在stringName中第一次出现的索引的整数。然后,您必须创建一个新字符串,该字符串接受原始字符串的子字符串。您必须根据indexOf()返回的整数指定子字符串的开始索引和结束索引

如果使用indexOf()查找长度超过一个字符的字符串,例如indexOf(“ef”),则还需要考虑该字符串的长度

如何从字符串“abcdefg”中删除[4]处的“e”

正如Ameya已经说过的,如果处理的是字符串对象,那么就不能真正“删除”e,因为字符串是固定的。您需要做的是构建一个新的字符串对象,该对象包含除e以外的所有位:

String input = "abcdefg";
String output = input.substring(0, 4) + input.substring(5);
//                     "abcd"         +       "fg"
还是干脆大写“cde”

同样,您可以在前面取位,添加“cde”的大写字母,然后添加其余字母:

String output = input.substring(0, 2) + input.substring(2, 5).toUpperCase()
                + input.substring(5);
//            = "ab" + "CDE" + "fg"
编写一个程序,只接受一个字母字符串作为输入,并以第二个字母开头的每三个字母大写显示该字符串,所有其他字母以小写形式显示

在这种情况下,您需要在字符上循环,因此最好使用StringBuilder,而不是将字符串添加在一起(出于性能原因)。下面是一个逐个添加每个字符的示例,对于每三个字符,将其转换为大写:

StringBuilder sb = new StringBuilder();
for (int i=0; i<input.length(); i++)
{
    char c = input.charAt(i);
    if (i%3 == 1) {
        c = Character.toUpperCase(c);  // every third character upper case
    }
    else {
        c = Character.toLowerCase(c);
    }
    sb.append(c);
}
String output = sb.toString(); // aBcdEfg
StringBuilder sb=新建StringBuilder();

对于(int i=0;iIt只是小心。你必须考虑所有的可能性。即使它是一个概念性的东西,如果你发布你的编码,即使它工作不正确,也会容易得多。它帮助我们更清楚地理解你的问题,表明你在问题中的地位,并让大多数用户更有可能写出高质量的答案为您提供。显示给您异常的代码。