因为习惯了C#中的padLeft和padRight,接触Java后突然失去这两个功能,觉得别扭,就试着实现了这两个方法。

Java中String.format()中带有字符串对齐功能如下:

System.out.println(String.format("*%1$-10s*", "moon"));
System.out.println(String.format("*%1$10s*", "moon"));

输出:

以上方法经过简单的变换可以得到:

public static String padWhitespaceLeft(String s, int len) {
return String.format("%1$" + len + "s", s);
} public static String padWhitespaceRight(String s, int len) {
return String.format("%1$-" + len + "s", s);
}

调用下面方法:

System.out.println("*" + padWhitespaceLeft("moon", 12) + "*");
System.out.println("*" + padWhitespaceRight("moon", 12) + "*");

可以得到结果:

以上只是介绍左右对齐时,补空白符的方法,但是在实际开发过程中,单纯的补空白符也许满足不了开发要求,为此我还要做一次强化改进:

    /**
* @作者 尧
* @功能 String左对齐
*/
public static String padLeft(String src, int len, char ch) {
int diff = len - src.length();
if (diff <= 0) {
return src;
} char[] charr = new char[len];
System.arraycopy(src.toCharArray(), 0, charr, 0, src.length());
for (int i = src.length(); i < len; i++) {
charr[i] = ch;
}
return new String(charr);
}
/**
* @作者 尧
* @功能 String右对齐
*/
public static String padRight(String src, int len, char ch) {
int diff = len - src.length();
if (diff <= 0) {
return src;
} char[] charr = new char[len];
System.arraycopy(src.toCharArray(), 0, charr, diff, src.length());
for (int i = 0; i < diff; i++) {
charr[i] = ch;
}
return new String(charr);
}

调用方法如下:

System.out.println("*" + padLeft("moon", 12, '-') + "*");
System.out.println("*" + padRight("moon", 12, '-') + "*");

输出结果:

这样在Java中处理字符串对齐就可以像C#那样简单了。

效率也是有保障的。

Java中实现String.padLeft和String.padRight的更多相关文章

  1. 从源代码的角度聊聊java中StringBuffer、StringBuilder、String中的字符串拼接

    长久以来,我们被教导字符串的连接最好用StringBuffer.StringBuilder,但是我们却不知道这两者之间的区别.跟字符串相关的一些方法中总是有CharSequence.StringBuf ...

  2. Java中的字符串驻留(String Interning)

    1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...

  3. 全面解释java中StringBuilder、StringBuffer、String类之间的关系

    StringBuilder.StringBuffer.String类之间的关系 java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,在上一篇博文中我 ...

  4. Java中equal和==区别及String创建过程

    Java中equal和==区别 1.起因 在一段Java代码中,使用了两种实现方式. //第一种命令行输入 int main (String[] args) { if(args[0] == " ...

  5. JAVA中Integer.valueOf, parsetInt() String.valueOf的区别和结果

    先来看段代码 public class IntegerDemo { public static void main(String[] args) { String num = null; System ...

  6. java中public static void main(String[] args)中String[] args代表什么意思?

    这是java程序的入口地址,java虚拟机运行程序的时候首先找的就是main方法.跟C语言里面的main()函数的作用是一样的.只有有main()方法的java程序才能够被java虚拟机欲行,可理解为 ...

  7. Java中的Scanner类和String类

    1:Scanner的使用(了解)    (1)在JDK5以后出现的用于键盘录入数据的类. (2)构造方法: A:讲解了System.in这个东西.            它其实是标准的输入流,对应于键 ...

  8. java中的main方法参数String[] args的说明

    参数String[] args 的作用是在运行main方法时,在控制台输入参数 class Test{ public static void main(String[] args){ for(Stri ...

  9. JAVA中数组(Array)、字符串(String)、集合(List、Set)相互转换

    1.数组转List String[] arr = new String[]{"A", "B", "C"}; List list = Arra ...

随机推荐

  1. ICC_lab总结——ICC_lab2:设计规划

    PS:字丑,禁止转载!!! 首先先写出大概的流程,然后是一些教材的理论知识总结,最后是进行lab2的一些流程概述. 教材的理论知识总结主要是:数字集成电路物理设计学习总结--布图规划和布局 --> ...

  2. 机器学习 - pycharm, pyspark, spark集成篇

    AS WE ALL KNOW,学机器学习的一般都是从python+sklearn开始学,适用于数据量不大的场景(这里就别计较“不大”具体指标是啥了,哈哈) 数据量大了,就需要用到其他技术了,如:spa ...

  3. PRINCE2学习

    今天对PRINCE2中提及的7大主题进行学习,主要的内容是通过概述和PMBOK之间的对比做一些总结,每个主题所包含的过程和方法并没有太多涉及,没有对整个体系有全面深入的学习,有些断章取义的地方也请博友 ...

  4. iframe 自适应内容高度

    在使用iframe的时候,会出现iframe不能随着内容的高度自动改变的情况,下面就介绍一种可以自适应高度的办法.<br/> <pre> <iframe id=" ...

  5. as3中去掉字符串两边的空格,换行符

     as3 去掉字符串两边的空格,换行符,方法一  ActionScript Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20   pub ...

  6. 1135: 零起点学算法42——多组测试数据(求和)IV

    1135: 零起点学算法42--多组测试数据(求和)IV Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted ...

  7. VS窗体选择BackGroupImage属性报错:已添加具有相同键的项

    高墙我今天第一次遇见这个问题.既然说是"已添加具有相同键的项."那我自然地认为会不会是文件夹哪里命名了两个相同的文件名.然后在这个Exception上越走越远. 好了不说废话.出现 ...

  8. NestedScrollView嵌套RecycleView 滑动 实现上滑隐藏 下滑显示头部效果

    废了好大的劲才弄好的,记下来 方便以后查看 public class MainActivity extends AppCompatActivity { private RecyclerView mRe ...

  9. myeclipse2015复制项目需要修改的地方

    项目下  D:\Workspaces\MyEclipse 2015\angular001\.settings  的org.eclipse.wst.common.component文件,修改里面未原来的 ...

  10. Android -- Android下的NDK开发(一)

    1,NDK是什么?为什么要进行NDK开发? NDK:Native Development Kit.Android应用运行在Dalvik虚拟机中.NDK允许开发人员使用本地代码语言(例如C和C++)实现 ...