cancel
Showing results for 
Search instead for 
Did you mean: 

Splitting a string after 255 characters

Former Member
0 Kudos

Hello,

I have a requirement, where in i have to read a string field (input)

split it at every 255th character and send it out into a target(output)which is unbounded

I have written a UDF , but i guess it gets unbounded(infinite loop),

Can anyone correct me or propose a better code?

thanks,

Hank


	 String out="";
	 int length=a[0].length();
	 int end=254;
	 int start=0;
	 for(;start<length;)
	 {
		   if((start+end)<length)
		   {
		   out=a[0].substring(start,(start+end));
		   result.addValue(out);
		   start=end+1;
		   }
	 }//end of for
	   if((start+end)>length&&start<length)
	   {
	   out=a[0].substring(start,length);
	   }

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

In your If loop, after the statement,' start=end+1', add 1 more statement,as

end = start + end.

Now check.

Regards,

Supriya.

Former Member
0 Kudos

I have made a change to my code, this got it working...thank u

Others pls see if it is good enough

Hank,



	 String out="";
	 int length=a[0].length();
	 int end=255;
	 int start=0;
	 for(;start<length;)
	 {
		   if((start+end)<length)
		   {
		   out=a[0].substring(start,(start+end));
		   result.addValue(out);
		   start=start+end;
		   }
		   else{
			break;
		   }
		   
	 }//end of for
	   if((start+end)>length&&start<length)
	   {
	   out=a.substring(start,length);
	   result.addValue(out);
	   }

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,

check this code

public void UDF(String[] a, ResultList result, Container container) throws StreamTransformationException{

int length=a[0].length();

int start = 0;

int end=255;

String res="";

if(length<255)

result.addValue(res);

else

{

while(length>255)

{

res= a[0].substring(start, end);

length=length -255;

start=end+1;

end=end+255;

result.addValue(res);

}

if(length<255)

result.addValue(res);

}

}

I have checked this code this working fine.

Regards

Ramesh