每日一练39——Java缩写双英文单词(8kyu)

题目

编写一个函数将名称转换为首字母。这个kata严格地用两个词,它们之间有一个空格。

输出应该是两个大写字母,并用点分隔它们。

它应该是这样的:

Sam Harris => S.H

Patrick feeney => P.F

测试用例:

import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;

public class SolutionTest {

    @Test
    public void testFixed() {
        assertEquals(AbbreviateTwoWords.abbrevName("Sam Harris"), "S.H");
        assertEquals(AbbreviateTwoWords.abbrevName("Patrick feenan"), "P.F");
        assertEquals(AbbreviateTwoWords.abbrevName("evan Cole"), "E.C");
        assertEquals(AbbreviateTwoWords.abbrevName("P Favuzzi"), "P.F");
        assertEquals(AbbreviateTwoWords.abbrevName("David Mendieta"), "D.M");
    }
}

解题

我的:

public class AbbreviateTwoWords {

    public static String abbrevName(String name) {
        char[] arrs = name.toCharArray();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < arrs.length; i++) {
            if (i == 0) { // 取首字母
                sb.append(arrs[i]);
            } else if (arrs[i] == 32) {
                sb.append(".").append(arrs[i+1]); // 加点取第二个首字母
                i++;
            }
        }
        return new String(sb).toUpperCase();
    }
}

还想到一个简单点的思路,先用空格spilt(" ")来分割,再取每个首字母并大写.substring(0, 1).toUpperCase()。

别人的:正则法

public class AbbreviateTwoWords {

  public static String abbrevName(String name) {
    return name.toUpperCase().replaceAll("(.).*\\s(.).*", "$1.$2");
  }
  
}

思考

这次正则法又装逼成功。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 9,861评论 1 44
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,895评论 0 4
  • 一、正则表达式的用途(搜索和替换) 1.1.正则表达式(regular expression,简称regex)是一...
    IIronMan阅读 13,418评论 0 14
  • 文/丽良儿 我曾持一卷诗,悠悠走近你身旁 待我靠近你心脏,却把诗遗忘 你曾几番入梦,同海上一片夕阳 忘不掉,青涩的...
    丽良儿阅读 3,599评论 3 9
  • “心灵的维系是很脆弱的。”“人与人之间的关系破裂…是因为心已经不在一起了…” 看完了披头士的默祷这一节,最为触动的...
    子姝阅读 3,392评论 0 0

友情链接更多精彩内容