精华内容
下载资源
问答
  • Java字符串中查找匹配的子字符串

    万次阅读 多人点赞 2017-05-07 15:25:25
    Java字符串中查找匹配的子字符串

    示例:
           在源字符串“You may be out of my sight, but never out of my mind.”中查找“my”的个数。输出:匹配个数为2

    三种方法:
           1.通过String的indexOf方法
           2. 通过正则表达式
           3. 通过String的split方法
    其中第一种方法只能用于精确匹配,第二三种则可以模糊匹配(方法3的参数为正则表达式)。例如:若将child改为“.my.”,第一种方法失效。

    方法1:通过String的indexOf方法

    public int indexOf(int ch, int fromIndex) :返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。如果不存在则返回 -1。

    //方法1、通过String的indexOf(String str, int fromIndex)方法
    	private void matchStringByIndexOf( String parent,String child )
    	{
    		int count = 0;
    		int index = 0;
    		while( ( index = parent.indexOf(child, index) ) != -1 )
    		{
    			index = index+child.length();
    			count++;
    		}
    		System.out.println( "匹配个数为"+count );							  //结果输出
    	}
    

    方法2:通过正则表达式

    类 Pattern :正则表达式的编译表示形式。
           指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
           因此,典型的调用顺序是
           Pattern p = Pattern.compile(“a*b”);
           Matcher m = p.matcher(“aaaaab”);
           boolean b = m.matches();

    • 类 Matcher:通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:
             matches 方法尝试将整个输入序列与该模式匹配。
             lookingAt 尝试将输入序列从头开始与该模式匹配。
             find 方法扫描输入序列以查找与该模式匹配的下一个子序列
    //方法2、通过正则表达式
    	private void matchStringByRegularExpression( String parent,String child )
    	{
    		
    		int count = 0;
    		Pattern p = Pattern.compile( child );
    		Matcher m = p.matcher(parent);
    		while( m.find() )
    		{
    			count++;
    			System.out.println( "匹配项" + count+":" + m.group() ); //group方法返回由以前匹配操作所匹配的输入子序列。
    		}
    		System.out.println( "匹配个数为"+count );							  //结果输出
    	}
    

    方法3:通过String的split方法

    public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。 该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。

    //方法3、通过split方法
    	private void matchStringBySplit( String parent,String child )
    	{
    		String[] array = parent.split(child);
    		System.out.println( "匹配个数为" + (array.length-1) );
    	}
    

    完整代码:

    import java.util.Arrays;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * 在字符串中查找匹配的子字符串
     * author:大能豆   QQ:1023507448
     * case :
     * 源字符串:You may be out of my sight, but never out of my mind.
     * 要查找的子字符串:my
     * 输出:匹配个数为2
     */
    public class MatchString {
    
        //方法1、通过String的indexOf(String str, int fromIndex)方法
        private void matchStringByIndexOf(String parent, String child) {
            int count = 0;
            int index = 0;
            while ((index = parent.indexOf(child, index)) != -1) {
                index = index + child.length();
                count++;
            }
            System.out.println("匹配个数为" + count);//结果输出
        }
    
        //方法2、通过正则表达式
        private void matchStringByRegularExpression(String parent, String child) {
            int count = 0;
            Pattern p = Pattern.compile(child);
            Matcher m = p.matcher(parent);
            while (m.find()) {
                count++;
                System.out.println("匹配项" + count + ":" + m.group()); //group方法返回由以前匹配操作所匹配的输入子序列。
            }
            System.out.println("匹配个数为" + count); //结果输出
        }
    
        //方法3、通过split方法,但此方法需考虑子字符串是否是在末尾,若在末尾则不需要-1
        private void matchStringBySplit(String parent, String child) {
            String[] array = parent.split(child);
            System.out.println("匹配个数为" + (array.length - 1));
        }
    
        public static void main(String[] args) {
            MatchString ms = new MatchString();
            String parent = "You may be out of my sight, but never out of my mind.";
            String child = "my";
    
            System.out.println("------通过indexOf-------");
            ms.matchStringByIndexOf(parent, child);  //调用方法1
    
            System.out.println("------通过正则表达式-------");
            ms.matchStringByRegularExpression(parent, child);  //调用方法2
    
            System.out.println("------通过split方法-------");
            ms.matchStringBySplit(parent, child);  //调用方法3
    
            String test = "abcdbdasda";
            String[] as = test.split("a");
            System.out.println(Arrays.toString(as));
        }
    
    }
    
    
    展开全文
  • java求字符串包含某个字符串的次数. 如 abcdefabcdef 为一个字符串 希望获得包含abcd的次数. 比如这个就是两次.
  • java 字符串 复制_Java字符串复制

    千次阅读 2020-07-12 11:14:52
    java 字符串 复制Sometime back I was asked how to copy a String in java. As we know that String is an immutable object, so we can just assign one string to another for copying it. If the original ...

    java 字符串 复制

    Sometime back I was asked how to copy a String in java. As we know that String is an immutable object, so we can just assign one string to another for copying it. If the original string value will change, it will not change the value of new String because of immutability.

    有时,我被问到如何在Java中复制字符串。 我们知道String是一个不可变的对象,因此我们可以将一个字符串分配给另一个字符串以进行复制。 如果原始字符串值将更改,则由于不变性,它将不会更改新String的值。

    Java字符串复制 (Java String Copy)

    Here is a short java String copy program to show this behavior.

    这是一个简短的Java String复制程序,用于显示此行为。

    package com.journaldev.string;
    
    public class JavaStringCopy {
    
    	public static void main(String args[]) {
    		String str = "abc";
    
    		String strCopy = str;
    
    		str = "def";
    		System.out.println(strCopy); // prints "abc"
    
    	}
    }

    Note that we can perform direct assignment of one variable to another for any immutable object. It’s not limited to just String objects.

    请注意,对于任何不可变的对象,我们都可以将一个变量直接分配给另一个变量。 它不仅限于String对象。

    However, if you want to copy a mutable object to another variable, you should perform deep copy.

    但是,如果要将可变对象复制到另一个变量,则应执行Deep copy

    Java字符串复制备用方法 (Java String Copy Alternate Methods)

    There are few functions too that can be used to copy string. However it’s not practical to use them when you can safely copy string using assignment operator.

    也很少有功能可用于复制字符串。 但是,当您可以使用赋值运算符安全地复制字符串时,使用它们并不实际。

    1. Using String.valueOf() method
      String strCopy = String.valueOf(str);
      
      String strCopy1 = String.valueOf(str.toCharArray(), 0, str.length()); //overkill*2

      使用String.valueOf()方法
    2. Using String.copyValueOf() method, a total overkill but you can do it.
      String strCopy = String.copyValueOf(str.toCharArray());
      
      String strCopy1 = String.copyValueOf(str.toCharArray(), 0, str.length()); //overkill*2

      使用String.copyValueOf()方法,完全可以解决问题,但是您可以做到。
    valueOf and valueOfcopyValueOf methods are useful. copyValueOf方法很有用。

    翻译自: https://www.journaldev.com/20811/java-string-copy

    java 字符串 复制

    展开全文
  • java字符串删除字符串Sometimes we have to remove character from String in java program. But java String class doesn’t have remove() method. So how would you achieve this? 有时我们必须在Java程序中从...

    java字符串删除字符串

    Sometimes we have to remove character from String in java program. But java String class doesn’t have remove() method. So how would you achieve this?

    有时我们必须在Java程序中从String中删除字符。 但是java String类没有remove()方法。 那么您将如何实现呢?

    Java从字符串中删除字符 (Java Remove Character from String)

    java remove character from string

    If you notice String class, we have replace() methods with different variations. Let’s see what all overloaded replace() methods String class has;


    如果您注意到String类,我们有具有不同变体的replace()方法。 让我们看看所有重载的replace()方法都有什么?

    1. replace(char oldChar, char newChar): Returns a string resulting from replacing all occurrences of oldChar in this string with newChar.

      replace(char oldChar, char newChar) :返回一个字符串,该字符串是用newChar替换此字符串中所有出现的oldChar的结果。
    2. replace(CharSequence target, CharSequence replacement): Replaces each substring of this string that matches the literal target sequence with the specified literal replacement sequence.

      replace(CharSequence target, CharSequence replacement) :使用指定的文字替换序列替换此字符串中与文字目标序列匹配的每个子字符串。
    3. replaceFirst(String regex, String replacement): Replaces the first substring of this string that matches the given regular expression with the given replacement.

      replaceFirst(String regex, String replacement) :使用给定的替换项替换与给定的正则表达式匹配的此字符串的第一个子字符串。
    4. replaceAll(String regex, String replacement): Replaces each substring of this string that matches the given regular expression with the given replacement.

      replaceAll(String regex, String replacement) :使用给定的替换项替换与给定的正则表达式匹配的此字符串的每个子字符串。

    So can we use replace('x','');? If you will try this, you will get compiler error as Invalid character constant. So we will have to use other replace methods that take string, because we can specify “” as empty string to be replaced.

    那么我们可以使用replace('x',''); ? 如果尝试这种方法,则会收到编译器错误,即Invalid character constant 。 因此,我们将不得不使用其他采用字符串的替换方法,因为我们可以将“”指定为要替换的空字符串。

    Java字符串删除字符示例 (Java String Remove Character Example)

    Below code snippet shows how to remove all occurrences of a character from the given string.

    下面的代码段显示了如何从给定的字符串中删除所有出现的字符。

    String str = "abcdDCBA123";
    String strNew = str.replace("a", ""); // strNew is 'bcdDCBA123'

    Java从字符串中删除子字符串 (Java Remove substring from String)

    Let’s see how to remove first occurrence of “ab” from the String.

    让我们看看如何从字符串中删除首次出现的“ ab”。

    String str = "abcdDCBA123";
    String strNew = str.replaceFirst("ab", ""); // strNew is 'cdDCBA123'

    Notice that replaceAll and replaceFirst methods first argument is a regular expression, we can use it to remove a pattern from string. Below code snippet will remove all small case letters from the string.

    注意, replaceAllreplaceFirst方法的第一个参数是一个正则表达式 ,我们可以使用它从字符串中删除模式。 下面的代码段将从字符串中删除所有小写字母。

    String str = "abcdDCBA123";
    String strNew = str.replaceAll("([a-z])", ""); // strNew is 'DCBA123'

    Java从字符串中删除空格 (Java Remove Spaces from String)

    String str = "Hello World Java Users";
    String strNew = str.replace(" ", ""); //strNew is 'HelloWorldJavaUsers'

    Java从字符串中删除最后一个字符 (Java Remove Last Character from String)

    There is no method to replace or remove last character from string, but we can do it using string substring method.

    没有替换或删除字符串中最后一个字符的方法,但是我们可以使用字符串子字符串方法来实现。

    String str = "Hello World!";
    String strNew = str.substring(0, str.length()-1); //strNew is 'Hello World'

    Java字符串删除字符和字符串示例 (Java String Remove Character and String Example)

    Here is the complete java class for the examples shown above.

    这是上面显示的示例的完整java类。

    package com.journaldev.examples;
    
    public class JavaStringRemove {
    
    	public static void main(String[] args) {
    		String str = "abcdDCBA123";
    
    		System.out.println("String after Removing 'a' = "+str.replace("a", ""));
    		
    		System.out.println("String after Removing First 'a' = "+str.replaceFirst("ab", ""));
    
    		System.out.println("String after replacing all small letters = "+str.replaceAll("([a-z])", ""));
    	}
    
    }

    Output produced by above program is:

    上面程序产生的输出是:

    String after Removing 'a' = bcdDCBA123
    String after Removing First 'a' = cdDCBA123
    String after replacing all small letters = DCBA123

    That’s all for removing character or substring from string in java program.

    这就是从Java程序中的字符串中删除字符或子字符串的全部。

    翻译自: https://www.journaldev.com/18361/java-remove-character-string

    java字符串删除字符串

    展开全文
  • 日期和时间格式由 日期和时间模式字符串 指定。在 日期和时间模式字符串 中,未加引号的字母 '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' 都被保留):

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

    展开全文
  • 提示:java截取某个字符之前或者之后的字符串 文章目录一、java截取某个字符之前或者之后的字符串:1. 截取"_"之前字符串2. 截取"_"之后字符串二、截取正数第二个"_"后面的内容 一、java截取某个字符之前或者之后的...
  • 例如有这样一个字符串字符串:用户[$xx$]的名称[$xx$]原值为[$xx$]。。。 [$xx$]的个数1到5个不定,我需要替换$xx$,有什么方法可以替换指定的第几个$xx$,或者按顺序每次替换下一个$xx$也可以,方法
  • Java字符串indexof() 的使用方法

    万次阅读 多人点赞 2016-07-05 15:48:34
    Java字符串中子串的查找共有四种方法(indexof()) indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。 如果 startindex 是负数,则 startindex 被当作零。如果...
  • Java字符串拼接原理

    千次阅读 2020-05-25 17:12:15
    JVM-字符串底层实现原理 前置内容 java虚拟机栈 1.那些字符串会进入字符串常量池 直接写的字面量 字面量的拼接结果(注意:如果字符串拼接中有变量则结果不会进入字符串常量池) 调用String的intern方法可以将...
  • java字符串添加字符Case 1: In a simple way we will learn how to add characters by using predefined methods. 情况1:以简单的方式,我们将学习如何使用预定义的方法添加字符。 With the help of Java ...
  • Java 字符串字符串数组转为 List

    万次阅读 2017-10-28 17:28:22
    Java 字符串字符串数组转为 List 问题描述由于从客户端传到后台的请求参数是 json 封装的,其中有个参数值是字符串数组(如:[“path1”,”path2”,”path3”]),需要将其转为 List,然后在循环中利用每个值。...
  • JAVA字符串常用api

    万次阅读 多人点赞 2017-02-14 17:51:53
    转载自字符串常用方法 和Java string字符串常用方法 字符串基本操作 1.substring(from,end)(含头不含尾) 截取一串字符串的一串子字符串,从from位置的字母(包括from)到end(不包括end位置)的字符串。 可以通过...
  • Java 字符串字符串拆分

    万次阅读 2018-06-04 09:46:04
    6. 字符串的拆分 1. String[] split(String regex) 将字符串以 regex 拆分成数组 */ import java.util.Scanner; public class TestString5 { public static void main(String[] a...
  • Java字符串排序比较。

    千次阅读 2019-09-06 15:47:14
    //Java 字符串如何排序比较 // 1、如果字符串相等返回值0 // 2、如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)(负值前字符串的值小于后字符串,正值前字符串大于后字符串...
  • Java 字符串字符串替换

    万次阅读 2018-06-04 09:44:36
    字符串的替换操作 1. String replace(char oldChar,char newChar) //将新字符替换旧字符 3. String replaceFirst(String regex,String replacement); //替换第一个满足条件的字符串 */ pub...
  • java 字符串拆分字符串数组

    千次阅读 2011-10-05 16:15:47
    java 字符串拆分字符串数组 用split(); if(associatedCheckMoreOldStr.length()>0){  String[] tmp = associatedCheckMoreOldStr.split("_");
  • Java求字符串的所有子串

    千次阅读 2019-08-31 19:55:10
    Java 求字符串的所有子串 求字符串的所有子串 输入. abc 输出. a ab ac b bc c 代码. class GetSubstring{ public static void main(String[] args){ String str = "abbc"; System.out.println(str); Syste...
  • java字符串换行拼接字符串

    千次阅读 2020-09-07 16:06:34
    @Test public void test(){ String s1="s1"+"\n"; String s2="s2"; System.out.println(s1+s2); }
  • 字符串转换为数字,字符串与字符数组的相互转换
  • java字符串占位符

    千次阅读 2017-07-13 09:52:34
    java字符串占位符使用
  • Java字符串使用小结

    千次阅读 2019-02-05 14:43:10
    摘要: 笔者近期在学习Java字符串这一部分的时候,Get到了一些比较新奇的点,准确的说,是和Python相比较而言的,本篇文章就是对于字符串这一部分的一个小结,不准确的地方还望读者批评指正。
  • Java 字符串转码

    万次阅读 2018-03-13 22:26:33
    Java字符串转码,根据实际运用的环境有以下三种方式 使用Java.lang.String这是最常用的方法,先用对应编码获取字节,然后重新构造新编码,示例代码如下: String s = "清山"; byte[] b = s....
  • 需求描述:输入一串带重复字符的字符串,输出第一次出现的字符的字符串 例如:输入acvbabcd,输出结果应该是:acvbd 目录 方法一:利用StringBuffer + indexof 方法二:利用StringBuffer + 正则表达式 方法一:...
  • public int indexOf(int ch ) :返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 或 public int indexOf(int ch, int fromIndex) :返回从 fromIndex 位置开始查找指定字符在...
  • JAVA 字符串转hex字符串

    千次阅读 2016-06-15 08:47:52
     * 字符串转hex字符串  * @throws UnsupportedEncodingException   */  public static String strToHex(String str) throws UnsupportedEncodingException {  return String.format("%x
  • Java 字符串转float运算 float转字符串

    万次阅读 2017-09-15 14:56:13
    需求:字符串字符串只有一位小数)转float进行运算, 将结果转成字符串(保留一位小数) 直接上代码: float f1 = 0.1f; String a1 ="1.5"; System.out.println(Float.parseFloat(a1)+f1); 答案:1.6 float f1 = ...
  • java 字符串操作

    万次阅读 多人点赞 2018-10-09 20:45:03
    字符串的初始化赋值和输出
  • java 字符串替换效率

    千次阅读 2017-06-14 00:02:31
    java 字符串替换效率
  • 字符串转化为字符数组: char[] ss=s.toCharArray();//s为要转化的字符串 字符数组转化为字符串: String s=""; for(int i=0;i<ss.length;i++){ s+=ss[i]; } 或 char ch={'1','2','3'}; String str=new ...
  • Java字符串转码

    千次阅读 2018-06-14 12:45:27
    Java 正确的做字符串编码转换字符串的内部表示?字符串java中统一用unicode表示( 即utf-16 LE) , 对于 String s = "你好哦!";如果源码文件是GBK编码, 操作系统(windows)默认的环境编码为GBK,那么编译...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,596,979
精华内容 638,791
关键字:

java字符串求差

java 订阅