2013-04-21 195 views
2

我有兩個字符串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://stackoverflow.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

回答

4

使用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

3

字符串對象是不可變的,你不能在它們被創建後修改它們。相反,你將不得不使用StringBuilder來創建一個新的charAt()

0

str2.charAt(i)函數返回一個值;它不允許在該位置設置字符 - 因此它說左邊的部分應該是一個變量。

0

您可以將兩個字符串中的兩個字符串轉換爲兩個字符數組並對其進行處理。在你的算法的末端從第二字符數組重建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); 
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); 
} 
} 
} 
-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); 
    } 

}

+0

歡迎來到堆棧溢出!這並沒有真正回答這個問題。雖然你的「不可變字符串」參數爲真,但OPs問題的根本原因是錯誤的語法。 – 2017-01-15 12:23:56

相關問題