精华内容
下载资源
问答
  • 日期和时间格式由 日期和时间模式字符串 指定。在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行...

    日期和时间格式由 日期和时间模式字符串 指定。在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串
    白话文的讲:这些A——Z,a——z这些字母(不被单引号包围的)会被特殊处理替换为对应的日期时间,其他的字符串还是原样输出。

    日期和时间模式(注意大小写,代表的含义是不同的)

    yyyy:年
    MM:月
    dd:日
    hh:1~12小时制(1-12)
    HH:24小时制(0-23)
    mm:分
    ss:秒
    S:毫秒
    E:星期几
    D:一年中的第几天
    F:一月中的第几个星期(会把这个月总共过的天数除以7)
    w:一年中的第几个星期
    W:一月中的第几星期(会根据实际情况来算)
    a:上下午标识
    k:和HH差不多,表示一天24小时制(1-24)。
    K:和hh差不多,表示一天12小时制(0-11)。
    z:表示时区  

    (2017-12-28日,更新)

    因为看到了Java 8 里面对日期的格式化操作的API,回头又看了看这个以前的日期格式化。发现,文中的实例不是很全面。不符合湿胸的性格,特地来完善一下。

        private static void formatDataTest() {
            /*
             * 日期转期望格式的字符串
             */
            //HH 和 hh 的差别:前者是24小时制,后者是12小时制。
            StringBuilder sb = new StringBuilder();
            sb.append("yyyy年MM月dd日 HH:mm:ss")
                    .append(" 上下午标志 a")
                    .append(" E")
                    .append(" 一年中的第D天")
                    .append(" 一月中的第F个星期")
                    .append(" 一年中的第w个星期")
                    .append(" 一月中的第W个星期")
                    .append(" Z")
                    .append(" z");
            SimpleDateFormat sdf = new SimpleDateFormat(sb.toString());
            String dateString = sdf.format(new Date());
            System.out.println(dateString);
            /*
             * 字符串转日期
             */
            Date date;
            try {
                date = sdf.parse(dateString);
                System.out.println(date);
            } catch (ParseException e) {
                System.out.println(e.getMessage());
            }
        }

    运行结果:

    2017年12月28日 18:21:731 上下午标志 下午 星期四 一年中的第362天 一月中的第4个星期 一年中的第52个星期 一月中的第5个星期 +0800 CST
    Thu Dec 28 18:21:00 CST 2017

    这里多说一句,一个月中的第几个星期,  F   这个出来的结果,不靠谱,具体我就在这多做测试啦,我是测试过,才这么说的,还是后面的那个  W  靠谱。

    (更新完成)

    具体简单常见的实例:

    package com.lxk.DateFormat;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * Created by lxk on 2016/11/4
     */
    public class Format {
        public static void main(String[] args) {
            Date ss = new Date();
            System.out.println("一般日期输出:" + ss);
            System.out.println("时间戳:" + ss.getTime());
            //Date aw = Calendar.getInstance().getTime();//获得时间的另一种方式,测试效果一样
            SimpleDateFormat format0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String time = format0.format(ss.getTime());//这个就是把时间戳经过处理得到期望格式的时间
            System.out.println("格式化结果0:" + time);
            SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
            time = format1.format(ss.getTime());
            System.out.println("格式化结果1:" + time);
        }
    }
    

    测试结果图:

    需要什么格式,自己拼好字符串,就可以格式化日期啦。授人以渔呀有木有。

    喷子们要是觉得简单呢,就省省唾沫星子吧。我就记个笔记用。

    上面的是:日期转自己想要的字符串格式,下面是字符串转日期类型

        private static void testStringToDate() {
            String s = "2017-05-25";
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            Date date = null;
            try {
                date = format.parse(s);
            } catch (ParseException e) {
                System.out.println(e.getMessage());
            }
            System.out.println(date);
        }

    下面是运行的debug截图。

    上面的那个  日期和时间模式  是按我们常用的年月日时分秒来放的,下面传个别人的专业的图,供参考。

    定义了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留):

    我写完文章,给自己点个赞,不过分吧,
    不过分,那我可就点啦啊。
    我先点为敬,你们随意。大家随意。不要客气。。。

    展开全文
  • 例如,字符串“bcda”是“abcd”的旋转,但“bdca”不是字符串“abcd”的旋转。对这个有趣的问题最简单的解决方案之一是首先检查两个字符串是否具有相同的长度,如果不是一个字符串不能是另一个字符串的旋转。如果...

    声明:本文为本博主翻译,未经允许,严禁转载!

    简介

    编写一个程序来检查一个字符串是否是另一个字符串的旋转字符串是一个常见的编码问题,你将在编程工作面试中看到。一个字符串被认为是另一个字符串的旋转,如果它具有相同的长度,包含相同的字符,并且围绕其中一个字符旋转。例如,字符串“bcda”是“abcd”的旋转,但“bdca”不是字符串“abcd”的旋转。对这个有趣的问题最简单的解决方案之一是首先检查两个字符串是否具有相同的长度,如果不是一个字符串不能是另一个字符串的旋转。如果它们的长度相同,那么只需要通过连接第一个字符串和自己来创建另一个字符串,现在检查第二个字符串是否是这个连接字符串的子字符串,如果是,那么第二个字符串是第一个字符串的旋转。

    您可能想知道,这个解决方案是如何工作的?那么,你可以围绕某个字符旋转字符串,如果你加入了字符串本身,那么它实际上包含了它自己的所有旋转版本。因此,当您使用contains()方法检查旋转后的字符串是此串联字符串的一部分时,如果是,则返回true,否则返回false。

    让我们用一个例子来理解这个,假设“JavaProgrammer”是第一个字符串,“ProgrammerJava”是第二个字符串。你可以围绕从索引0开始的任何字符旋转字符串,即'J'到index=length-1,这是'r ”。
    现在,如果将“JavaProgrammer”与自身连接起来,则会得到“JavaProgrammerJavaProgrammer”,现在您可以看到它包含第一个字符串的每个可能的旋转。这是一个非常好的解决方案,当我第一次了解它的时候,我和你现在一样惊讶。
    顺便说一句,如果面试官会问你如何解决这个问题,而不使用字符串连接,那么你做什么?我会告诉你如何在这篇文章中做到这一点。

    问题

    给定两个字符串s1和s2,你将如何检查s1是否是s2的旋转版本?

    方案

    正如我所说,解决这个问题有两种方法,一是使用字符串连接,二是不使用字符串连接。

    解决方案1的逻辑

    下面是通过使用字符串连接来检查字符串是否是另一个字符串的旋转的步骤:
    1. 使用+运算符连接两个字符串s1和s1。如果你愿意的话,你也可以使用StringBuffer或者StringBuilder,但是+看起来不错,干净,而且在内部也使用StirngBuilder(见Effective Java)。
    2. 通过使用contains()方法检查连接版本中是否存在旋转版本。

    解决方案2的逻辑

    下面是检查一个给定的String s2是否是String s1的旋转而不使用字符串连接的步骤。
    1. 检查两个字符串的长度是否相同,如果不是,则不是旋转。如果是,则继续下一步。
    2. 检查两个字符串是否相等,如果是,则s2是s1的一个旋转。如果不是,则转到下一步。
    3. 取第一个字符串的第一个字符,并在第二个字符串中找到索引。如果找不到,则不是旋转,但是如果找到,继续下一步。
    4. 用找到的索引减去旋转字符串的长度以找到最终位置。
    5. 检查被旋转的String的第一个字符是否与输入String的最后位置的字符相同,并且input.substring(finalPos)等于rotate.substring(0,index)。

    如果没有限制,可以使用任何解决方案解决问题,但如果面试官不允许字符串连接,则使用第二种解决方案。

    Java代码实现

    /**
     * Java Program to check if one String is rotation of other. In this program, we
     * will see two solution of this interesting problem, one by using String
     * concatenation and other without using String concatenation.
     * 
     * @author Javin
     *
     */
    public class RotateStringDemo {
    
    	/**
    	 * Returns true if one string is rotation of another, nulls are not
    	 * considered rotation of each other
    	 * 
    	 * @param str
    	 * @param rotated
    	 * @return true if rotated is rotation of String str
    	 */
    
    	public static boolean isRotatedVersion(String str, String rotated) {
    		boolean isRotated = false;
    
    		if (str == null || rotated == null) {
    			return false;
    		} else if (str.length() != rotated.length()) {
    			isRotated = false;
    		} else {
    			String concatenated = str + str;
    			isRotated = concatenated.contains(rotated);
    		}
    
    		return isRotated;
    	}
    
    	/**
    	 * Return true if rotated is rotation of input String
    	 * 
    	 * @param input
    	 * @param rotated
    	 * @return true if one String is rotation of other
    	 */
    
    	public static boolean isRotated(String input, String rotated) {
    		if (input == null || rotated == null) {
    			return false;
    		} else if (input.length() != rotated.length()) {
    			return false;
    		}
    
    		int index = rotated.indexOf(input.charAt(0));
    		if (index > -1) {
    			if (input.equalsIgnoreCase(rotated)) {
    				return true;
    			}
    
    			int finalPos = rotated.length() - index;
    			return rotated.charAt(0) == input.charAt(finalPos)
    					&& input.substring(finalPos).equals(rotated.substring(0, index));
    		}
    
    		return false;
    	}
    
    	public static void main(String args[]) {
    		String test = "abcd";
    		String rotated = "dabc";
    		boolean isRotated = isRotatedVersion(test, rotated);
    		System.out.printf("Is '%s' is rotation of '%s' : %b %n", rotated, test, isRotated);
    	}
    
    }
    

    Junit测试

    这里是一些单元测试来验证两个版本的字符串旋转逻辑。这是使用JUnit 4库编写的,因此您需要将junit4.jar包含到您的类路径中以运行这些测试。 @Test注释用于创建测试方法,这些方法将由JUnit Runner运行。请参阅JUnit in Action以了解有关JUnit如何工作以及如何执行测试用例的更多信息。

    public class RotateStringDemoTest {
    	@Test
    	public void testIsRotatedVersion() {
    		assertTrue(isRotatedVersion("abc", "bca"));
    		assertTrue(isRotatedVersion("abc", "cab"));
    		assertFalse(isRotatedVersion("abc", "bac"));
    		assertFalse(isRotatedVersion("abc", null));
    		assertFalse(isRotatedVersion("abc", ""));
    		
    	}
    
    	@Test
    	public void testisRotated() {
    		assertTrue(isRotated("1234", "2341"));
    		assertTrue(isRotated("1234", "3412"));
    		assertTrue(isRotated("1234", "4123"));
    		assertFalse(isRotated("1234", "23s41"));
    		assertFalse(isRotated("1234", null));
    		assertFalse(isRotated("1234", ""));
    	}
    }

    这是关于如何检查两个字符串是否在Java中相互旋转。最简单的解决方案是只连接原始和旋转的字符串,并检查旋转是否存在于大的连接字符串中。这是一个了不起的解决方案,因为当你加入原始和旋转的版本时,它包含了第一个字符串的每一个可能的旋转。如果给定的旋转出现在串联的字符串中,那么它肯定是给定字符串的旋转。

    原文链接

    2 Ways to check if A String is rotation of other in Java?

    译者注释

    方案2的处理其实还是有问题,它无法处理包含重复字符串的情况,相应的实现可以修改如下:

    	public static boolean isRotated(String input, String rotated) {
    		if (input == null || rotated == null) {
    			return false;
    		} else if (input.length() != rotated.length()) {
    			return false;
    		}
    
    		int index = 0;
    		int finalPos = 0;
    
    		do {
    			index = rotated.indexOf(input.charAt(0), index);
    			if (index < 0) {
    				return false;
    			}
    
    			// if (input.equalsIgnoreCase(rotated)) {
    			// return true;
    			// }
    
    			finalPos = rotated.length() - index;
    			if (rotated.charAt(0) == input.charAt(finalPos)
    					&& input.substring(finalPos).equals(rotated.substring(0, index))) {
    				return true;
    			}
    			
    			index += 1;
    		} while (index < input.length());
    
    		return false;
    	}

    展开全文
  • C语言统计一个字符串(包含空格)中字母的种类(不是个数) 写了一个小程序来通过输入一个字符串后,统计26个字母中出现了几种。 例如:输入juue 输入3 输入abcd efg lmn 输出10 思路简述 先用一个数组将26个字母...

    C语言统计一个字符串(包含空格)中字母的种类(不是个数)

    写了一个小程序来通过输入一个字符串后,统计26个字母中出现了几种。

    例如:输入juue 
          输入3
          输入abcd  efg      lmn
          输出10
    

    思路简述
    先用一个数组将26个字母进行保存,然后将输入烦人字符串中的每一个元素与这26个字母对比,看时候有重复。第一次出现重复时将保存26个元素的数组中对应的元素赋值为空字符(或者其他不适字母的字符),然后让标记值加一。采用循环遍历每一个输入字符数组的元素。最后的标记值就是答案。

    易错提醒
    一开始在读取字符串时采用的是scanf();这种方式,但是这种方式只能读取连续的字符串,中间不能有空格。 因为scanf(); 在读取时遇到空格会停止。所以应该采用gets();的读法,

    下面是程序代码

    #include <stdio.h>
    #include <string.h>//使用strlen()函数,获取字符数组长度
    int main()
    {
    	char dict[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
    	char str[1000];
    	gets(str);
    	int len, i, j, flag=0;//flag是标记值
    
    	len=strlen(str);
    	for(i=0;i<len;++i)
    	{
    		for(j=0;j<20;++j)
    		{
    			if((str[i] == dict[j]) && ( str[i] != ' '))
    			{
    				dict[j]='0';
    				flag+=1;
    				// continue;
    			}
    		}
    	}
    
    	printf("%d\n",flag);
    	return 0;
    }
    
    展开全文
  • 有两种方法可以解决一种是利用HashMap解决 另一种是利用ASCII编码进行...给定一个长度,随机产生一个该长度的字符串,由大写小写字母以及数字组成 Java中随机数的生成 题目 给定一个字符串,请输出这个字符串由...

    有两种方法可以解决一种是利用HashMap解决
    另一种是利用ASCII编码进行转换存储在数组中打印出来
    ASCII解决的方案我就不写了,参照下面文章吧!如果这一块你掌握的不是太好,这几道练习题会对你有帮助的!
    给定一个由数字组成的字符串,统计每个数字出现的次数
    给定一个长度,随机产生一个该长度的字符串,由大写小写字母以及数字组成 Java中随机数的生成


    题目


    给定一个字符串,请输出这个字符串由哪些字符组成,出现过多少次?

    接下来我是用HashMap解决的,直接贴代码了,详解见注释


    import java.util.*;
    /** 
    * @author Ziph
    * @date 2020年3月6日
    * @Email mylifes1110@163.com
    */
    public class Homework14 {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		System.out.print("请输入一个字符串:");
    		String str = sc.nextLine();
    		count(str);
    	}
    	
    	public static void count(String str) {
    		//将字符串转化为字符数字
    		char[] chars = str.toCharArray();
    		//创建一个HashMap集合
    		Map<Character, Integer> map = new HashMap<Character, Integer>();
    		//遍历字符数组
    		for (char c : chars) {
    			//当c字符首次存在于map中记录1
    			if (!map.containsKey(c)) {
    				map.put(c, 1);
    			} else {
    				//多次存在map中+1记录就OK
    				//实际上就是c字符每出现一次覆盖一次该key的value值(+1后的value值)
    				map.put(c, map.get(c) + 1);
    			}
    			//可以把if-else更换为下面的表达式更显简单
    			//map.put(c, map.containsKey(c) ? map.get(c) + 1 : 1);
    		}
    		//打印结果
    		for (Character key : map.keySet()) {
    			System.out.println(key + " 字符在字符串中出现过 " + map.get(key) + " 次");
    		}
    	}
    }
    

    在这里插入图片描述

    展开全文
  • (1)从键盘输入一个字符串(串长不大于80)。 (2)以十进制输出字符串中非字母字符的个数(不是a to z或 A to Z)。 (3)输出原字符串且令非字母字符闪烁显示。 (4)找出字符串中ASCII码值最大的字符,在字符串...
  • 我们编写的程序几乎都会使用字符串。在C语言中,只能使用普通的以null结尾的字符数组来表示字符串。这种表示会有很多问题,例如缓冲区溢出等。然而,C++ STL(standard template ...字符串中的最后一个字符是空字符
  • 字符串

    千次阅读 多人点赞 2020-05-18 09:20:10
    字符串的定义:串是字符串的简称。在数据结构中,串是一种在数据元素的组成上具有一定约束条件的线性表,即要求组成线性表的所有数据元素都是字符,所以说串是一个有穷的字符序列。 串是由零个或多个字符组成的有限...
  • 回文字符串一个字符串从左到右与从右到左遍历得到的序列是相同的 例如 abcaba是回文字符串 abcab不是回文字符串 abcdefgfedxyz——>defgfed 暴力破解法 """ 下面字串中不是回文字符串用f表示 反则用t表示 ...
  • 一个字符串(A)中删去另一个字符串(B)中已经出现的字符 1.首先要对另一个字符串进行标记 标记的方法有很多我举一个例子: 用一个bool数组来存26个字母并且对他们初始化为false,如果另外那个字符串存在,则将它...
  • 详解 Python 字符串):字符串基础

    千次阅读 多人点赞 2021-01-16 20:59:45
    在 Python 中,字符串就是串字符的组合,它是不可变的、有限字符序列,包括可见字符、不可见字符(如空格符等)和转义字符。Python 通过 str 类型提供大量方法来操作字符串,如字符串的替换、删除、截取、复制、...
  • C++ 字符串与字符数组 详解

    万次阅读 多人点赞 2018-03-03 19:28:22
    在C++中,有两种类型的字符串表示形式: C-风格字符串 C++引入的string类 C-风格字符串 ...C 风格的字符串起源于 C 语言...下面的声明和初始化创建了一个 “Hello” 字符串。由于在数组的末尾存储了空字符,所以...
  • ——以字符’\0’结尾的char数组就是一个字符串,但如果char数组没有以’\0’结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的char数组。 两者的区别: 字符串: 1、字符串赋初值用双引号引...
  • c++字符串与c字符串

    千次阅读 多人点赞 2019-05-27 19:32:26
    c++字符串与c风格字符串1. C风格的字符串2. 字符串字面量3.C++ std::string 类3.1 C风格字符串的优势和劣势3.2 使用string类3.2.1 std:...你编写的每应用程序都会使用某种类型的字符串。使用老式C语言时,没有太多...
  • 我有一个清单: my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456'] 并要搜索包含字符串'abc' 。 我怎样才能做到这一点?
  • 1.输入一个非空字符串,去除重复的字符后,从小到大排序输出为一个字符串。 请关注【python的爬虫与数据分析之路】gzh,回复‘作业’获取答案
  • 题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中, 则字符串一称之为字符串二的子串。 注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。 请编写一个函数,输入两个...
  • java判断一个字符串是不是数字类型

    千次阅读 2020-06-14 13:17:18
    查看JDK的API文档可以发现String类提供了一个matches这个方法很好用,可以对字符串内容进行判断. 于是判断一个String类型能否转换成Integer类型可以用下面这个方法. //声明一个字符串 String s="123"; if(s.matches...
  • 就是下面的方法只适用于一次操作,如果两次操作会有问题,什么问题呢,就是你第一次插入之后,Stringbuilder里面的index就被扰乱了啊,就像一个脑经急转弯:一个人不能空腹吃两个香蕉,因为他吃完第一根香蕉的时候,...
  • python字符串字符串处理函数及字符串相关操作

    万次阅读 多人点赞 2014-04-12 23:23:25
    http://blog.csdn.net/pipisorry/article/details/42085723字符串介绍python字符串表示Python除处理数字外还可以处理字符串字符串用单撇号或双撇号包裹:&gt;&gt;&gt; 'spam eggs' 'spam eggs' &...
  • 字符串之子字符串查找

    千次阅读 2018-04-25 22:42:49
    字符串查找 字符串的一种基本操作就是子字符串查找:给定一段长度为N的文本text和一个长度为M的模式字符串pattern,在文本中找到一个和该模式相符的子字符串。解决该问题的大部分算法都可以很容易地扩展为找出...
  • 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但 是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出 为“我ABC”而不是“我ABC+汉...
  • 题目:输入两个字符串,从第一字符串中删除第二个字符...毕竟,这道题的基本思路就是在第一个字符串中拿到一个字符,在第二个字符串中查找一下,看它是不是在第二个字符串中。如果在的话,就从第一个字符串中删除。但如
  • Java中字符串indexof() 的使用方法

    万次阅读 多人点赞 2016-07-05 15:48:34
    indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。 如果 startindex 是负数,则 startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能...
  • 回文:把相同的字符串颠倒过来,产生首尾回环,叫做回文。 例如:1234321、1221、1。...方法一:递归实现判断一个字符串是否是回文。 bool IsPalindereme(char* str, size_t size) { if (size ) return true; if
  • 首先我们要介绍一个什么叫回文数:回文,就是指一个字符串顺着读和反着读都是一样的字符串,例如madam,你我你,我爱我 等等一些列的字符串 1、首先来判断一下一个字符串是否是回文字符串: public int palindrome...
  • 假设用户输入一个字符串,允许有空格,要你判断它...而 ”a b c d b b a“ 则不是一个一个回文字符串下面是C#的实现方式: class Palindrome { static public void PalindromeMain() { System.Console
  • 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。 回文串是指正反两个方向都一样的单词或短语,排列是指字母重新排列,回文串不一定是字典中的单词。 例如: 输入:“tactcoa” 输出:True(排列有...
  • 字符指针:字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。 char *ps=&quot;C Language&quot;; 顺序是:1....
  • 利用指针编写程序,从键盘输入一个字符串,删除该字符串的所有首部和尾部数字字符,输出修改后的字符串以及该字符串的长度。 举例:输入的字符串为12abcd34,删除首部和尾部数字字符后字符串变成abcd,长度为4 分析与...
  •  替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串。举例说明其功能:  =========================================  @echo off  set aa=伟大的中国!我为你自豪!  echo 替换前

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,021,079
精华内容 408,431
关键字:

下面哪一个不是完整字符串