我有两个字符串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
答案 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);
}
}