My code is as below. i need to add single quotes for each word in string with single quotes after appending DD to it.
public class Main
{
public static void main(String[] args) {
String ChkboxIds = "'a1b2c3','321cba','123abc'";
String checkBoxId = null;
String checkId = null;
StringBuilder checkIDS = new StringBuilder("'");
for(int i=0;i<=ChkboxIds.split(ChkboxIds, ',').length;i ){
checkBoxId = "DD" ChkboxIds.split(",")[i].replace("'","") "," checkBoxId;
checkId = checkBoxId.substring(0, checkBoxId.length() - 5);
System.out.println("---PRINT---" checkId);
for(int j=0;j<i;j ){
checkIDS..append('\'').append(checkId.split(",")).append('\'').append(',');
System.out.println("---PRINT123----" checkIDS);
}
}
}
}
I have tried using StringBuffer too. please point your answers here. The output i get is some junk data while i need the words with dd attached at the start.
Expected output:'DDa1b2c3','DD321cba','DD123abc'
CodePudding user response:
Problem
issue at
.append(checkId.split(","))
where you append anString[]
so it's representation is it's hashcodedon't need a second loop, each word need one loop round, no inner loop needed
your split is wrong, you need
ChkboxIds.split(",")
, you don't need with the same string as delimiter
Fix
You can do much more simpler than that
- split on comma
- remove quotes, append
DD
, add quotes - save at same place in array
- join array with comma
String chkboxIds = "'a1b2c3','321cba','123abc'";
String[] splitted = chkboxIds.split(",");
String checkBoxId;
for (int i = 0; i < splitted.length; i ) {
checkBoxId = "DD" splitted[i].replace("'", "");
splitted[i] = "'" checkBoxId "'";
}
String result = String.join(",", splitted);
System.out.println(result);
// 'DDa1b2c3','DD321cba','DD123abc'
Regex power
String chkboxIds = "'a1b2c3','321cba','123abc'";
String result = chkboxIds.replaceAll("'(\\w )'", "'DD$1'");
CodePudding user response:
Try this:
var ids = Arrays.stream( ChkboxIds.split( "," ) ) // Separate the words
.map( s -> s.replace( '\'', '' ) ) // Strip the single quotes
.map( s -> "DD%s".formatted( s ) ) // Prepend with "DD"
.collect( Collectors.joining( "','", "'", "'" ) );
System.out.println( ids );
Alternatively:
var ids = Arrays.stream( ChkboxIds.split( "," ) ) // Separate the words
.map( s -> s.replaceFirst( "'", "'DD" ) ) // Replace the first single quote with the prefix
.collect( Collectors.joining( "','" ) );
System.out.println( ids );
Refer to the respective Javadoc for the details.