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

问题描述:

我有两个字符串str1和str2。我试图通过使用charAt将一些字母从一个字符串复制到另一个字符串。我知道我可以使用字符串复制,但我想要一些字符不是全部。如何从一个字符串复制到Java中的另一个字符串?

如何将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 
+1

的Java蜇是不可变的,这意味着一旦其内容设置,它不能被改变,相反,哟你应该使用[String#subString](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring(int))或者如果你真的迷上了这个想法你自己做,[StringBuilder](http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html) – MadProgrammer 2013-04-21 03:54:56

+0

可能的重复。这已经在这里回答了。 http://*.com/questions/6952363/java-replace-a-character-at-a-specific-index-in-a-string – hop 2013-04-21 03:57:34

+0

感谢您的帮助家伙。 – Jack 2013-04-21 04:05:15

使用String.substring(...)如果你只是想一些字符的字符。

编辑:

要结合从另一个字符串的一些字符的现有的字符串,需要使用:

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

要创建从另一个字符串的一些字符的新字符串,你可以使用:

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

我不知道如果我得到它。我怎样才能从一个字符串复制到另一个?我必须这样做吗? str1.substring(0,3)= str2.substring(0,3)? – Jack 2013-04-21 04:08:30

charAt(int)方法返回在指定索引字符它不设置它,使用StringBuilder类,并保留追加要忽略他人

字符串对象是不可变的,你不能在它们被创建后修改它们。相反,你将不得不使用StringBuilder来创建一个新的charAt()

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

您可以将两个字符串中的两个字符串转换为两个字符数组并对其进行处理。在你的算法的末端从第二字符数组重建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); 

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); 
} 
} 
} 

由于字符串是不可变的,你最终会在错误如果您尝试通过使用赋值运算符如你在上述只是复制。相反,你可以追加每个字符与现有的一个像下面的代码:

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); 
    } 

}

+0

欢迎来到堆栈溢出!这并没有真正回答这个问题。虽然你的“不可变字符串”参数为真,但OPs问题的根本原因是错误的语法。 – 2017-01-15 12:23:56