`
h248980496
  • 浏览: 7277 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

string 格式化输出工具类

阅读更多
项目中要输出满多少字要换行,由于中文和英文占的位数不同,并且有的后面添加\n,有的是</br>,所以就自己写了一下工具类,保证输出的每行宽度相同。英文字符和符号占一位,中文和全角标点占2位


import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

/**
 * 
 * desc: string格式化输出换行工具
 * 
 * @author <a href="mailto:yourmail">Hegege</a>
 * @version CVS $Revision: 1.1 $ $Date: 2005/12/05 08:42:21 $
 */
public class StringFormatPrintUtil {
 
 public static final String FSLP_RS_STRING = "string";
 public static final String FSLP_RS_TEXT = "text";

     
 public static String subString(String text, int length, String endWith) {
  int textLength = text.length();
  int byteLength = 0;
  StringBuffer returnStr = new StringBuffer();
  for (int i = 0; i < textLength && byteLength < length * 2; i++) {
   String str_i = text.substring(i, i + 1);
   if (str_i.getBytes().length == 1) {// 英文
    byteLength++;
   } else {// 中文
    byteLength += 2;
   }
   returnStr.append(str_i);
  }
  try {
   if (byteLength < text.getBytes("GBK").length) {// getBytes("GBK")每个汉字长2,getBytes("UTF-8")每个汉字长度为3
    returnStr.append(endWith);
   }
  } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
  }
  return returnStr.toString();
 }
 
 public static Map formatStringLnPlus(String text,int length,String endWith){
  Map rs = new HashMap();
  StringBuffer ss = new StringBuffer();
  //输入的文本长度
  int textLength = text.length();
  //总字节长度
  int byteLength = 0;
  //定位指针
  int p = -1;
  //是否差半位
  boolean k = false;
  
  for(int i=0;i<textLength;i++){
   String str_i = text.substring(i, i + 1);
   if (str_i.getBytes().length == 1) {// 英文
    byteLength++;
    if(byteLength>length&&p<0){
     p = i-1;
     k=false;
    }else if(byteLength==textLength&&p<0){
     p = i;
     k=false;
    }
    
   } else {// 中文
    byteLength += 2;
    if(byteLength>length&&p<0){
     p = i-1;
     k=true;
    }else if(byteLength==textLength&&p<0){
     p = i;
     k=true;
    }
    
   }
   
  }
  
  if(byteLength<length){
   //小于,要补全
   ss.append(text);
   for(int i = byteLength;i<length;i++){
    ss.append(endWith);
   }
   text = "";
  }else if(byteLength==length){
   //等于,完整输出
   ss.append(text);
   text = "";
  }else{
   //超出,要截取
   for(int i=0;i<p;i++){
    String str_i = text.substring(i, i + 1);
    ss.append(str_i);
   }
   text = text.substring(ss.toString().length());
   
   
   if(k){
    ss.append(endWith);
   }
   
  }
  
  rs.put(FSLP_RS_STRING, ss.toString());
  rs.put(FSLP_RS_TEXT, text);
  return rs;
 }

}

分享到:
评论

相关推荐

    时间格式化工具类

    "时间格式化工具类"通常是指自定义的类,用于封装Java标准库中的`java.time`或`java.text.SimpleDateFormat`等类的功能,以提供更方便、更灵活的时间处理方法。下面我们将深入探讨这个主题。 首先,`java.time`包是...

    std::string format格式化函数源代码及两种格式化方法

    而`format`函数通常指的是用于格式化输出的工具,类似于C语言中的`printf`或C++的`std::stringstream`。本项目提供的`std::string format`函数是作者自定义的一个实现,它提供了一种方便的方式来格式化`std::string`...

    一个简单的时间格式化工具类

    标题中的“一个简单的时间格式化工具类”指的是一个Java编程中的实用工具类,它主要用于处理日期和时间的格式化工作。在Java开发中,日期和时间的格式化是常见的需求,例如将日期从一种格式转换为另一种格式,或者将...

    java时间日期格式化工具类

    本篇文章将深入探讨Java中的日期格式化工具类及其使用方法,主要围绕提供的`DateUtil`工具类展开。 首先,`java.util.Date`是Java早期用于表示日期和时间的基础类,但它并不提供直接的格式化功能。为了将`Date`对象...

    PHP格式化输出函数

    在PHP编程中,格式化输出函数是开发者进行调试、数据展示以及信息处理的重要工具。本文将详细解析一个典型的PHP格式化输出函数,探讨其工作原理、参数配置及其应用场景,帮助读者更深入地理解和掌握这一核心功能。 ...

    String封装工具类

    这个工具类通常包含了对字符串的各种操作,如拼接、格式化、查找、替换、分割、去空格、大小写转换等。在Java中,Apache Commons Lang是一个常用的库,其中的StringUtils类就是这样一个强大的String工具类。它包含在...

    格式化时间工具类

    "格式化时间工具类"通常是指一个自定义的类,它封装了Java的日期时间处理方法,以便更方便地进行日期格式化、解析和比较。在这个场景下,`TimeFormatUtil.java`文件很可能就是这样一个工具类。 Java标准库中提供了`...

    Java 日期格式化 工具类

    Date和String的相互转换 得到指定日期所在周的星期几的日期 获取指定年的第几周的最后一天日期 获取指定年的第几周的第一天日期 获取指定日期为当前年的第几周 获取指定日期中的月份 获得当前月的第一天 获得当前月...

    iOS日期格式化工具类

    总结来说,"iOS日期格式化工具类"是iOS开发中的一个实用组件,它利用`NSDateFormatter`进行日期的格式化输出,并能生成独特的日期字符串以满足文件命名的需求。通过封装这些常见操作,这个工具类可以提高代码的...

    数字格式化工具类

    标题中的“数字格式化工具类”指的是在编程中用于处理数字字符串的一种实用程序类,它通常包含各种方法,用于将数字转换成特定格式,如货币、百分比、科学记数法等。这样的工具类可以极大地简化开发过程,提高代码...

    String和Date工具类

    本篇文章将详细讲解`String`和`Date`工具类中涉及的知识点,以及如何在实际开发中有效地运用它们。 首先,我们来看`String`工具类。在Java中,`String`对象是不可变的,这意味着一旦创建,就不能改变其内容。因此,...

    封装 fastjson 的json格式化工具

    **Fastjson JSON格式化工具封装详解** Fastjson是阿里巴巴开源的一款高效、强大的Java语言实现的JSON库。它具有性能优异、使用简单等优点,广泛应用于Java Web开发中,特别是对于数据的序列化与反序列化操作。在...

    C# String.Format格式化输出和ToString()的一些常用用法.docx

    总结一下,`String.Format`和`ToString()`是C#中进行字符串格式化输出的重要工具。`ToString()`主要用于单一对象的格式化,而`String.Format`则可以处理复杂的格式化需求,包括多参数的合并和格式控制。熟练掌握这两...

    Java日期工具类,Java时间工具类,Java时间格式化

    本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...

    pb字符串长度格式化

    4. **格式化输出**:更高级的格式化操作可能涉及`Format`函数,它可以按照指定的格式模板生成字符串,如日期、数字的格式化。例如,`Format("%0.2f", value)`将把`value`转换为保留两位小数的字符串。 5. **自定义...

    安卓textView相关-Android一些数字文字相关的格式化工具类.rar

    这个压缩包“安卓textView相关-Android一些数字文字相关的格式化工具类.rar”可能包含了一些辅助开发者处理数字和文字格式化的自定义工具类。虽然没有具体的代码示例,但我们可以基于常见的需求来探讨`TextView`中与...

    Xml本地格式化工具(Java代码显示,图形操作)

    本地XML格式化工具是开发者处理XML文档时不可或缺的助手,它可以帮助我们将杂乱无章的XML源码整理成清晰易读的格式。在Java编程环境下,XML的格式化通常涉及到DOM(Document Object Model)、SAX(Simple API for ...

    json格式数据解析工具类

    在提供的"Log打印输出json格式数据"文件中,很可能是包含了示例代码或者日志记录,用于展示如何使用这个工具类进行数据解析,并且将解析结果以Log的形式输出,这对于调试和理解工具类的使用非常有帮助。在实际使用时...

    Java字符串_日期_数字格式化输出

    2. **DecimalFormat 类**:更高级的数字格式化工具,可以自定义各种格式模式。 - **示例代码**: ```java DecimalFormat df = new DecimalFormat("#,###.##"); System.out.println(df.format(1234567.890123)); ...

Global site tag (gtag.js) - Google Analytics