我写的 没有写完 要用到递归来操作这个字符串,说一下这个题目的要求吧!接受一个字符串,然后按照每行13个字分行,2个字母算一个字,一个全角的符号算一个字,汉字算一个字体(这些判断字的我都写出来了)
就是不会递归来截取这个字符串 谁改一下帖上来学习一下,谢谢了!
package com.hitech.cpp.util;import java.util.ArrayList;
import java.util.List;/**
* WEB打印组件所需的分行打印控制方法
* @author montao
*/
public class DisjoinRowPrint {
private int ROW_CONTENT_COUNT = 13;
/**
* 返回一个分行好之后的LIST集合,集合里面存放内容的不同行
* @param wordContent
* @return
*/
@SuppressWarnings("unchecked")
public List<String> getRowContentToPrint(String wordContent)
{
//创建一个LIST对象用于存储分行好之后的集合内容
List<String> rowList = new ArrayList();
//判断取值
if(wordContent!=null && wordContent!="")
{
System.out.println("进入判断,查看到String的Length的值是: "+wordContent.length());
//换行统计符
float count = 0;
//将Srting转变为StringBuffer
StringBuffer sb = new StringBuffer(wordContent);
System.out.println("进入判断,查看到StringBuffer的Length的值是: "+sb.length());
if(sb.length()>0)
{
//循环遍历传递过来的字符串
for(int i=0;i<sb.length();i++)
{
String s1 = String.valueOf(sb.charAt(i));
//汉字或则全角符号
if(s1.getBytes().length==2)
{
count++;
}
//字母和半角符号
if(s1.getBytes().length==1)
{
count = count + 0.5f;
}
//如果一行满足规定的字数就换行
if(Math.round(count)==ROW_CONTENT_COUNT)
{
String newLineContent = sb.substring(0,ROW_CONTENT_COUNT); //截取字符串
sb.replace(0, ROW_CONTENT_COUNT, ""); //将这段字符串删除
//将该截取出来的字符串存放到List里
rowList.add(newLineContent);
System.out.println("第"+i+"行的字符串是: " + newLineContent);
}
}
}
System.out.println(sb.toString());
}
return null;
}
public static void main(String arg[])
{
DisjoinRowPrint d = new DisjoinRowPrint();
d.getRowContentToPrint("我不知道是不是真的哦?。你说的什么阿 可以才知道什么是加的?我想回去阿我要回家暗暗阿,,,,我受不了了 我轩昂回家了阿 骂个比的死垃圾爱公司阿!");
}
}
就是不会递归来截取这个字符串 谁改一下帖上来学习一下,谢谢了!
package com.hitech.cpp.util;import java.util.ArrayList;
import java.util.List;/**
* WEB打印组件所需的分行打印控制方法
* @author montao
*/
public class DisjoinRowPrint {
private int ROW_CONTENT_COUNT = 13;
/**
* 返回一个分行好之后的LIST集合,集合里面存放内容的不同行
* @param wordContent
* @return
*/
@SuppressWarnings("unchecked")
public List<String> getRowContentToPrint(String wordContent)
{
//创建一个LIST对象用于存储分行好之后的集合内容
List<String> rowList = new ArrayList();
//判断取值
if(wordContent!=null && wordContent!="")
{
System.out.println("进入判断,查看到String的Length的值是: "+wordContent.length());
//换行统计符
float count = 0;
//将Srting转变为StringBuffer
StringBuffer sb = new StringBuffer(wordContent);
System.out.println("进入判断,查看到StringBuffer的Length的值是: "+sb.length());
if(sb.length()>0)
{
//循环遍历传递过来的字符串
for(int i=0;i<sb.length();i++)
{
String s1 = String.valueOf(sb.charAt(i));
//汉字或则全角符号
if(s1.getBytes().length==2)
{
count++;
}
//字母和半角符号
if(s1.getBytes().length==1)
{
count = count + 0.5f;
}
//如果一行满足规定的字数就换行
if(Math.round(count)==ROW_CONTENT_COUNT)
{
String newLineContent = sb.substring(0,ROW_CONTENT_COUNT); //截取字符串
sb.replace(0, ROW_CONTENT_COUNT, ""); //将这段字符串删除
//将该截取出来的字符串存放到List里
rowList.add(newLineContent);
System.out.println("第"+i+"行的字符串是: " + newLineContent);
}
}
}
System.out.println(sb.toString());
}
return null;
}
public static void main(String arg[])
{
DisjoinRowPrint d = new DisjoinRowPrint();
d.getRowContentToPrint("我不知道是不是真的哦?。你说的什么阿 可以才知道什么是加的?我想回去阿我要回家暗暗阿,,,,我受不了了 我轩昂回家了阿 骂个比的死垃圾爱公司阿!");
}
}
解决方案 »
- JDK1.6是不是不能再2000系统上安装
- html代码中转义字符的问题?????????????
- 关于Connection.createStatement方法
- jsp 范围问题
- 爬虫程序提取页面问题!!!!
- 偶尔出现 "Error establishing socket" 错误!!
- 求jsp调用EXCEL函数并计算后将值返回的方法
- xp sp2 系统下 的 密码输入框为什么比 同长度设置 的 普通文本输入框 要短一些?
- jsp调用javabean问题
- spring hibernate service层执行hql问题
- jsp一个很郁闷的问题
- jsp 读文件内容并返回内容给一个字符串而不是直接打印
void fun(List lt , String str){
if(str.length() <13){ //字的长度判断,这样感觉有问题
lt.add(str);
}else{
String tmp = subString.. // 截取13个字
lt.add(tmp);
fun(lt,sub()); //sub()为剩下的字符串
}
}
说的什么阿 可以才知道什么
是加的?我想回去阿我要回家
暗暗阿,,,,我受不了了
我轩昂回家了阿 骂个比的死
垃圾爱公司阿!
下面的程序运行的效果如上面的字符:import java.util.ArrayList;
import java.util.List;/**
* WEB打印组件所需的分行打印控制方法
* @author montao
*/
public class DisjoinRowPrint { private int ROW_CONTENT_COUNT = 13; /**
* 返回一个分行好之后的LIST集合,集合里面存放内容的不同行
* @param wordContent
* @return
*/
@SuppressWarnings("unchecked")
public List<String> getRowContentToPrint(String wordContent) {
//创建一个LIST对象用于存储分行好之后的集合内容
List<String> rowList = new ArrayList();
//判断取值
if (wordContent != null && !wordContent.equals("")) {
System.out.println("进入判断,查看到String的Length的值是: " + wordContent.length());
//换行统计符
float count = 0;
//将Srting转变为StringBuffer
StringBuffer sb = new StringBuffer(wordContent);
System.out.println("进入判断,查看到StringBuffer的Length的值是: " + sb.length());
if (sb.length() > 0) {
//循环遍历传递过来的字符串
for (int i = 0; i < sb.length(); i++) {
String s1 = String.valueOf(sb.charAt(i));
//汉字或则全角符号
if (s1.getBytes().length == 2) {
count++;
}
//字母和半角符号
if (s1.getBytes().length == 1) {
count = count + 0.5f;
}
//如果一行满足规定的字数就换行
if (Math.ceil(count)>ROW_CONTENT_COUNT-1) {
String newLineContent = sb.substring(0, ROW_CONTENT_COUNT); //截取字符串
sb=sb.delete(0,ROW_CONTENT_COUNT);
System.out.println(newLineContent);
// sb.replace(0, ROW_CONTENT_COUNT, ""); //将这段字符串删除
//将该截取出来的字符串存放到List里
// rowList.add(newLineContent);
// System.out.println("第" + i + "行的字符串是: " + newLineContent);
}
}
}
System.out.println(sb.toString());
}
return null;
} public static void main(String arg[]) {
DisjoinRowPrint d = new DisjoinRowPrint();
d.getRowContentToPrint("我不知道是不是真的哦?。你说的什么阿 可以才知道什么是加的?我想回去阿我要回家暗暗阿,,,,我受不了了 我轩昂回家了阿 骂个比的死垃圾爱公司阿!");
}
}