字符串切割

来源:互联网 发布:servlet获取表单数据 编辑:程序博客网 时间:2024/04/28 06:07
 /**
     * 分割行
     * 
     * 
@param src,width,height
     * @date
     * 
@return static String[]
     * @autor
     
*/

    
public static String[] split(String src, int width, int height)
    
{
        Vector vector 
= new Vector(20);
        String buffer 
= "";
        
int bufferWidth = 0;
        
int maxBufferWidth = 0;

        
for (int i = 0; i < src.length(); i++)
        
{
            
// 如果遇到换行时
            if (src.charAt(i) == ' ')
            
{
                vector.addElement(buffer);
                maxBufferWidth 
= Math.max(maxBufferWidth, bufferWidth);
                buffer 
= "";
            }

            
else
            
{
                buffer 
+= src.charAt(i);

                
// 计算buffer的宽度
                bufferWidth = Font.getFont(Font.FACE_PROPORTIONAL,
                        Font.STYLE_PLAIN, Font.SIZE_SMALL).stringWidth(buffer);

                
// 如果buffer的宽度大于显示区域的宽
                if (bufferWidth > width)
                
{
                    vector.addElement(buffer.substring(
0, buffer.length() - 1));
                    bufferWidth 
= Font.getFont(Font.FACE_PROPORTIONAL,
                            Font.STYLE_PLAIN, Font.SIZE_SMALL).stringWidth(
                            buffer.substring(
0, buffer.length() - 1));
                    maxBufferWidth 
= Math.max(maxBufferWidth, bufferWidth);
                    buffer 
= "";
                    i
--;
                }

                
else if (i == src.length() - 1)
                
{
                    vector.addElement(buffer);
                    maxBufferWidth 
= Math.max(maxBufferWidth, bufferWidth);
                }

            }

        }


        
// 获取数量
        String[] text = new String[vector.size()];

        
// 将数组循环赋值
        for (int i = 0; i < vector.size(); i++)
        
{
            text[i] 
= (String) vector.elementAt(i);
        }


        
return text;
    }