如何从Java中的字符串复制到另一个字符串?

时间:2013-04-21 03:51:29

标签: java string substring charat

我有两个字符串str1和str2。我试图使用 charAt 将一些字母从一个字符串复制到另一个字符串。我知道我可以使用字符串副本,但我想要一些字符不是全部。

如何将 subString 从字符串复制到Java中的另一个字符串?

public class MyServerSide {

    public static void main(String[] args) {
        String str1 = "Hello World!;
        String str2;
        for (int 1=0; i < str1.length(); i++){
            if (i>=3){
                str2.charAt(i) = str1.charAt(i);//Here is the problem. It gives me an error
                                                //Saying that the left argument must be a 
                                                //variable

            }//End of if statement
        }//End of for loop
    }//End of main method
}//End of class

9 个答案:

答案 0 :(得分:5)

如果您只想要一些字符,请使用String.substring(...)

编辑:

要将现有字符串与您要使用的另一个字符串中的某些字符组合使用:

String anotherString = anotherString + originalString.substring(...);

要使用另一个字符串中的某些字符创建一个新字符串,您将使用:

String aNewString = originalString.substring(...);

答案 1 :(得分:4)

String对象是不可变的,您不能在创建后修改它们。相反,您必须通过附加charAt()来使用StringBuilder来创建一个新的。

答案 2 :(得分:2)

charAt(int)方法返回指定索引处没有设置它的字符,使用StringBuilder类并继续追加你想要忽略其他字符的字符

答案 3 :(得分:0)

str2.charAt(i)函数返回一个值;它不允许在该位置设置字符 - 因此它表示左侧部分应该是变量。

答案 4 :(得分:0)

您可以转换两个char数组中的两个字符串并对其进行处理。在算法结束时,从第二个char数组中重新创建str2:

char[] ch1 = str1.toCharArray();
char[] ch2 = str2.toCharArray();

for (int i=0; i < ch1.length; i++)
    if (i>=3)
        ch2[i] = ch1[i];

str2 = new String(ch2);

答案 5 :(得分:0)

import java.sql.*;
import java.io.*;
import javax.sql.*;
class Ems 
{
public static void main(String args[])
{
        int ch;
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con =DriverManager.getConnection("jdbc:oracle:thin:@finn:1521:orcl","hr","hr");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from EmpDirc");
while(rs.next())
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+rs.getString(4)+" "+rs.getString(5)
+" "+rs.getString(6)+" "+rs.getString(7));

            do
            {
                System.out.println("\n");
                System.out.println("              ENTER EMPLOYEE DETAILS:");
                System.out.println("1.Insert Record into the Table");
                System.out.println("2.Update The Existing Record.");
                System.out.println("3.CALCULATE PRIVILAGE LEAVE");
                System.out.println("4.Display all the Records from the Table");
                System.out.println("5.Exit");
                System.out.println("Enter your choice: ");



                System.out.println("4.Exit");
                System.out.println("Enter your choice: ");

                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                ch=Integer.parseInt(br.readLine());

                  switch(ch)
                {
                    case 1:

                System.out.println("1.INSERT EMPLOYEE ID.");
                int num= Integer.parseInt(br.readLine());
                System.out.println("2.INSERT EMPLOYEE NAME");
                String ename=br.readLine();
                System.out.println("3.INSERT EMPLOYEE DESIGNATION");
                String desig=br.readLine();
                System.out.println("4.INSERT EMPLOYEE DATEOFBIRTH");
                String dob=br.readLine();
                System.out.println("5.INSERT EMPLOYEE PHONE NO OR ANY CONTACT");
                String mob= br.readLine();
                System.out.println("6.INSERT EMPLOYEE EMAIL ID");
                String email= br.readLine();
                System.out.println("7.INSERT EMPLOYEE SALARY");
                String sal=br.readLine();
                System.out.println("8.INSERT EMPLOYEE paid LEAVES");
                String pl=br.readLine();
                System.out.println("9.INSERT EMPLOYEE CASUAL LEAVES");
                String cl=br.readLine();
                System.out.println("10.INSERT EMPLOYEE FINAL SALARY");
                String fi= br.readLine();


                    String sql="insert into EmpDirc values(?,?,?,?,?,?,?,?,?,?)";
                    PreparedStatement p=con.prepareStatement(sql);
                    p.setInt(1,num);
                    p.setString(2,ename);
                    p.setString(3,desig);
                    p.setString(4,dob);
                    p.setString(5,mob);
                    p.setString(6,email);
                    p.setString(7,sal);
                    p.setString(8,pl);
                    p.setString(9,cl);
                    p.setString(10,fi);


                    p.executeUpdate();
                    System.out.println("Record Added");
                    //p.close();
                    //con.close();
                    break;


            case 2:
                    System.out.println("UPDATE EMPLOYEE id : ");
                    int emnum=Integer.parseInt(br.readLine());
            System.out.println("UPDATE EMPLOYEE DESIGNATION : ");
                    String emdesig=br.readLine();
                    System.out.println("UPDATE EMPLOYEE PHONE: ");
                    String emphn=br.readLine();
                    System.out.println("UPDATE EMPLOYEE EMAIL: ");
                    String emmail=br.readLine();
                    System.out.println("UPDATE EMPLOYEE SALARY: ");
                    String emsal=br.readLine();
                    System.out.println("UPDATE EMPLOYEE PL: ");
                    String empl=br.readLine();
                    System.out.println("UPDATE EMPLOYEE CL: ");
                    String emcl=br.readLine();
                    System.out.println("UPDATE EMPLOYEE FINAL SALARY: ");
                    String emfi=br.readLine();
                    sql="update EmpDirc set Desig=?, Phnum=? , Email=?, Salary=? , Pl=?, Cl=?, TakeHomeSal=? where Empid=?";
                    PreparedStatement  ps=con.prepareStatement(sql);

                    ps.setString(1,emdesig);
                    ps.setString(2,emphn);
                    ps.setString(3,emmail);
                    ps.setString(4,emsal);
                    ps.setString(5,empl);
                    ps.setString(6,emcl);
                    ps.setString(7,emfi);
            ps.setInt(8,emnum);
                    ps.executeUpdate();
                    System.out.println("Record Updated");
                    //p.close();
                    //con.close();
                    break;


                    case 3:
                    System.exit(0);

                    default:
                    System.out.println("Invalid Choice");
                    break;
}
}while(ch!=2);


con.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
}

答案 6 :(得分:0)

您可以简单地使用new运算符创建一个新实例。

String str1 = "abc";
String str2 = new String(str1);

答案 7 :(得分:0)

请参阅以下代码,它将起作用 首先初始化 str2

public static void main(String[] args) {
    String str1 = "Hello World!;
            String str2="";//Here initialize first
            for (int 1=0; i < str1.length(); i++){
                if (i>=3){
                   str2 = str2+str1.charAt(i);//Concatenate existing string with new String
                }//End of if statement
            }
 }

答案 8 :(得分:-1)

由于字符串是不可变的,如果您尝试仅使用如上所述的赋值运算符进行复制,则最终会出错。相反,您可以使用现有字符附加每个字符,如下面的代码:

class Cpystring{
    public static void main(String args[])
   {
       String str1="Hello World";
       String str2="";
      for(int i=0;i<str1.length();i++)
      {
          str2+=str1.charAt(i);
       }
       System.out.println(str2);
    }

}