精华内容
下载资源
问答
  • 字符串分割 java

    2018-10-03 16:20:34
    字符串分割 java 题目描述 连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组, 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 首先输入一个整数,为...

    字符串分割 java

    题目描述
    连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组,
    长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
    首先输入一个整数,为要输入的字符串个数。
    例如:
    输入:2
    abc
    12345789
    输出:abc00000
    12345678
    90000000
    接口函数设计如下:
    /*****************************************************************************
    功能:存储输入的字符创
    输入:字符串
    输出:无

    返回:0表示成功,其它返回-1
    ***/
    int AddString(char strValue);
    /

    功能:获取补位后的二维数组的长度
    输入:无
    输出:无

    返回:二维数组长度
    *****************************************************************************/
    int GetLength();

    /*****************************************************************************
    功能:将补位后的二维数组,与输入的二维数组做比较
    输入:strInput:输入二维数组,iLen:输入的二维数组的长度
    输出:无

    返回:若相等,返回0;不相等,返回-1.其它:-1;
    ******************************************************************************/
    int ArrCmp(char strInput[][9],int iLen);

    输入描述:
    首先输入数字n,表示要输入多少个字符串。连续输入字符串(输出次数为N,字符串长度小于100)。
    输出描述:
    按长度为8拆分每个字符串后输出到新的字符串数组,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
    示例1
    输入
    2
    abc
    123456789

    输出
    abc00000
    12345678
    90000000

    代码:

    import java.util.*;
    
    public class Main {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            while(sc.hasNextLine()){
                int n = Integer.parseInt(sc.nextLine());
                for(int i = 0; i < n; i++){
                    String st = sc.nextLine();
                    if(st == null || st.length() == 0){
                        continue;
                    }
                    StringBuilder sb = new StringBuilder(st.trim());
                    if(sb.length() % 8 != 0){
                        int count = 8 - sb.length() % 8;
                        for(int k = 0; k < count; k++){
                            sb.append("0");
                        }
                    }
                    for(int j = 0; j < sb.length(); j += 8){
                        System.out.println(sb.substring(j, j + 8));
                    }
                }
            }
        }
    }
    
    展开全文
  • 字符串分割Java

    2021-03-10 17:33:16
    字符串分割-Java 方法一 @Test public void test06() { // 分割字符串 String str = "hello-world-!"; String[] split = str.split("-"); for (String s : split) { System.out.println(s); } } hello...

    字符串分割-Java

    • 方法一
        @Test
        public void test06() {
            // 分割字符串
            String str = "hello-world-!";
    
            String[] split = str.split("-");
            for (String s : split) {
                System.out.println(s);
            }
        }
    

    hello
    world
    !

    • 方法二
        @Test
        public void test07() {
            // Java 中我们可以使用 StringTokennizer 设置不同分隔符来分隔字符串,
            // 默认的分隔符是:空格、制表符(\t)、换行符(\n)、回车符(\r)。
    
            String str = "This ,is ,a ,test ,of ,StringTokennizer";
    
            // 默认使用空格分隔
            StringTokenizer st = new StringTokenizer(str);
            while (st.hasMoreElements()) {
                System.out.println(st.nextElement());
            }
    
            System.out.println();
    
            // 使用“,”分割
            StringTokenizer st1 = new StringTokenizer(str, ",");
            while (st1.hasMoreElements()) {
                System.out.println(st1.nextElement());
            }
        }
    
    

    This
    ,is
    ,a
    ,test
    ,of
    ,StringTokennizer

    This
    is
    a
    test
    of
    StringTokennizer

    展开全文
  • 首先读取XML文件内的某个节点的属性值,这个已经在Java实现——Dom4j读写XML文件中详细介绍过了。那么毋庸置疑第一步就是理清如何将一个文件夹内的全部内容一起复制到指定的新的文件夹下。后面这个FileUtils工具类类...

    0.前言

    今天有个需求,把Android中data/data目录下指定(通过读预置的XML文件)的多个应用下的多个目录全部内容通过OTG模式复制到U盘中。

    首先读取XML文件内的某个节点的属性值,这个已经在Java实现——Dom4j读写XML文件中详细介绍过了。

    那么毋庸置疑第一步就是理清如何将一个文件夹内的全部内容一起复制到指定的新的文件夹下。

    后面这个FileUtils工具类类可以完全满足需求,在此分享出来方便大家使用。

    参数为源目录以及目标目录的File对象实例。

    1.  字符串分割

    1.1  使用split

    第一步就是将字符串根据分号切分,这个使用split比较容易,代码分别总结如下。

    String str = "com.tencent.mm/MicroMsg;com.tencent.mm/shared_prefs" ;

    String[] temp = str.split(";");

    System.out.println(Arrays.toString(temp));

    同时,若不止通过分号进行分割,如需要根据逗号和分号一起分割,那么改变split内的参数即可。

    String[] temp = str.split(",|;");

    1.2  使用StringTokenizer

    文档上表示使用StringTokenizer性能会比split更高,这里介绍一下StringTokenizer的用法,也比较简单。

    1.2.1  第一种构造方法

    //构造一个用来解析str的StringTokenizer对象

    //Java默认的分隔符是“空格”“制表符(‘\t’)”“换行符(‘\n’)”“回车符(‘\r’)”

    StringTokenizer(String str)这种构造函数的使用示例如下:

    String s=new String("SEU Calvin is handsome");

    StringTokenizer st=new StringTokenizer(s);

    System.out.println("Token Total:"+st.countTokens());//返回nextToken()被调用的次数

    while ( st.hasMoreElements() ){ //判断是否还有分隔符

    System.out.println(st.nextToken());//nextToken返回分隔后的各个子字符串输出结果为:

    Token Total:4

    SEU

    Calvin

    is

    handsome

    1.2.2  第二种构造方法

    //构造一个用来解析str的StringTokenizer对象

    //并提供一个指定的分隔符

    //同时,指定是否返回分隔符,如果不提供boolean默认为false

    StringTokenizer(String str,String delim,boolean returnDelims)这种构造函数的使用示例如下:

    String s=new String("SEU=Calvin=is=handsome");

    StringTokenizer st=new StringTokenizer(s,"=",true);

    System.out.println("Token Total:"+st.countTokens());

    while ( st.hasMoreElements() ){

    System.out.println(st.nextToken());输出结果为:

    Token Total:7

    SEU

    =

    Calvin

    =

    is

    =

    handsome若第三个参数修改为false,或根本不带第三个参数,因为默认为false,则输出如下:

    Token Total:4

    SEU

    Calvin

    is

    handsome

    2.  文件拷贝工具类

    FileUtils工具类展示如下:

    import java.io.File;

    import java.io.FileFilter;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.OutputStream;

    import java.util.ArrayList;

    import java.util.List;

    public class FileUtils {

    private static final int DEFAULT_BUFFER_SIZE = 1024 * 4;

    public static void copyDirectory(File srcDir, File destDir) throws IOException {

    copyDirectory(srcDir, destDir, true);

    }

    public static void copyDirectory(File srcDir, File destDir, boolean preserveFileDate) throws IOException {

    copyDirectory(srcDir, destDir, null, preserveFileDate);

    }

    public static void copyDirectory(File srcDir, File destDir, FileFilter filter) throws IOException {

    copyDirectory(srcDir, destDir, filter, true);

    }

    public static void copyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate)

    throws IOException {

    if (srcDir == null) {

    throw new NullPointerException("Source must not be null");

    }

    if (destDir == null) {

    throw new NullPointerException("Destination must not be null");

    }

    if (srcDir.exists() == false) {

    throw new FileNotFoundException("Source '" + srcDir + "' does not exist");

    }

    if (srcDir.isDirectory() == false) {

    throw new IOException("Source '" + srcDir + "' exists but is not a directory");

    }

    if (srcDir.getCanonicalPath().equals(destDir.getCanonicalPath())) {

    throw new IOException("Source '" + srcDir + "' and destination '" + destDir + "' are the same");

    }

    // Cater for destination being directory within the source directory

    // (see IO-141)

    List exclusionList = null;

    if (destDir.getCanonicalPath().startsWith(srcDir.getCanonicalPath())) {

    File[] srcFiles = filter == null ? srcDir.listFiles() : srcDir.listFiles(filter);

    if (srcFiles != null && srcFiles.length > 0) {

    exclusionList = new ArrayList(srcFiles.length);

    for (int i = 0; i < srcFiles.length; i++) {

    File copiedFile = new File(destDir, srcFiles[i].getName());

    exclusionList.add(copiedFile.getCanonicalPath());

    }

    }

    }

    doCopyDirectory(srcDir, destDir, filter, preserveFileDate, exclusionList);

    }

    private static void doCopyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate,

    List exclusionList) throws IOException {

    if (destDir.exists()) {

    if (destDir.isDirectory() == false) {

    throw new IOException("Destination '" + destDir + "' exists but is not a directory");

    }

    } else {

    if (destDir.mkdirs() == false) {

    throw new IOException("Destination '" + destDir + "' directory cannot be created");

    }

    if (preserveFileDate) {

    destDir.setLastModified(srcDir.lastModified());

    }

    }

    if (destDir.canWrite() == false) {

    throw new IOException("Destination '" + destDir + "' cannot be written to");

    }

    // recurse

    File[] files = filter == null ? srcDir.listFiles() : srcDir.listFiles(filter);

    if (files == null) { // null if security restricted

    throw new IOException("Failed to list contents of " + srcDir);

    }

    for (int i = 0; i < files.length; i++) {

    File copiedFile = new File(destDir, files[i].getName());

    if (exclusionList == null || !exclusionList.contains(files[i].getCanonicalPath())) {

    if (files[i].isDirectory()) {

    doCopyDirectory(files[i], copiedFile, filter, preserveFileDate, exclusionList);

    } else {

    doCopyFile(files[i], copiedFile, preserveFileDate);

    }

    }

    }

    }

    private static void doCopyFile(File srcFile, File destFile, boolean preserveFileDate) throws IOException {

    if (destFile.exists() && destFile.isDirectory()) {

    throw new IOException("Destination '" + destFile + "' exists but is a directory");

    }

    FileInputStream input = new FileInputStream(srcFile);

    try {

    FileOutputStream output = new FileOutputStream(destFile);

    try {

    copy(input, output);

    } finally {

    try {

    output.close();

    } catch (IOException ioe) {

    // do nothing

    }

    }

    } finally {

    try {

    input.close();

    } catch (IOException ioe) {

    // do nothing

    }

    }

    if (srcFile.length() != destFile.length()) {

    throw new IOException("Failed to copy full contents from '" + srcFile + "' to '" + destFile + "'");

    }

    if (preserveFileDate) {

    destFile.setLastModified(srcFile.lastModified());

    }

    }

    // 测试出要复制的文件数量

    public static int copy(InputStream input, OutputStream output) throws IOException {

    long count = copyLarge(input, output);

    if (count > Integer.MAX_VALUE) {

    return -1;

    }

    return (int) count;

    }

    // 复制大文件

    public static long copyLarge(InputStream input, OutputStream output) throws IOException {

    byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];

    long count = 0;

    int n = 0;

    while (-1 != (n = input.read(buffer))) {

    output.write(buffer, 0, n);

    count += n;

    }

    return count;

    }

    }

    d69db9598c6e91ec3390f94bc62a1efb.png

    展开全文
  • 关于字符串分割,我用jdk的split、apache的common的split、正则表达式、StringTokenizerr以及substring做了以下比较,比较的时间为纳秒,用一个字符串“192.168.20.121”作为示例,打印时间为:使用jdk的split切分...

    关于字符串的分割,我用jdk的split、apache的common的split、正则表达式、StringTokenizerr以及substring做了以下比较,比较的时间为纳秒,用一个字符串“192.168.20.121”作为示例,

    打印时间为:

    使用jdk的split切分字符串

    192  168  20  121  花费时间1086171

    使用common的split切分字符串

    192  168  20  121  花费时间9583620

    使用StringTokenizer的切分字符串

    192  168  20  121  花费时间184380

    使用jdk的pattern切分字符串

    192  168  20  121  花费时间222654

    使用jdk的substring切分字符串

    192  168  20  121  花费时间157562

    虽然每次打印的时间不太相同,但是基本相差不大。

    通过以上分析得知使用substring和StringTokenizer的效率相对较高,其它相对较差。

    为什么StringTokenizer的性能相对好些呢?通过分析发现

    StringTokener.hasMoreElement和String.split(String.split是用正则表达式匹配,所以不使用KMP字符串匹配算法)用的都是按顺序遍历的算法,时间复杂度O(m*n),较高。

    不过StringTokener是一边按顺序遍历,一边返回每个分组;而Spring.split是全部分组完成,再返回字符串数组。这个区别不大,但是如果我们不需要全部都分组,只需要某个分组的字符串,那么StringTokener性能会好点。

    apacheJakatar的StringUtils一样用了KMP算法(按序查找字符串,时间是O(m+n)),按理说效率应该最高,但是为啥性能会比较差呢,需要进一步研究。不过有一个优点是如果使用一些转义字符

    如“.”、“|”等不需要加"\\",如果使用jdk的split必须加转义。

    附源码:

    String ip ="192.168.20.121";

    long st1 = System.nanoTime();

    String[] ips =ip.split("\\.");

    System.out.println("使用jdk的split切分字符串");

    for (int i = 0; i 

    System.out.print(ips[i]+"  ");

    }

    System.out.println("花费时间"+(System.nanoTime()-st1));

    long st2 = System.nanoTime();

    ips= StringUtils.split(ip,"\\.");

    System.out.println("使用common的split切分字符串");

    for (int i = 0; i 

    System.out.print(ips[i]+"  ");

    }

    System.out.println("花费时间"+(System.nanoTime()-st2));

    long st3 = System.nanoTime();

    System.out.println("使用StringTokenizer的切分字符串");

    StringTokenizer token=new StringTokenizer(ip,".");

    while(token.hasMoreElements()){

    System.out.print(token.nextToken()+"  ");

    }

    System.out.println("花费时间"+(System.nanoTime()-st3));

    long st4 = System.nanoTime();

    Pattern pattern = Pattern.compile("\\.");

    ips =pattern.split(ip);

    System.out.println("使用jdk的pattern切分字符串");

    for (int i = 0; i 

    System.out.print(ips[i]+"  ");

    }

    System.out.println("花费时间"+(System.nanoTime()-st4));

    long st5 = System.nanoTime();

    System.out.println("使用jdk的indexOf切分字符串");

    int k=0,count=0;

    StringBuilder sb = new StringBuilder();

    for (int i = 0; i 

    if(ip.substring(i, i+1).equals(".")){

    if(count==0){

    System.out.print(ip.substring(0, i)+"  ");

    }else if(count==1){

    System.out.print(ip.substring(k+1, i)+"  ");

    }else{

    System.out.print(ip.substring(k+1, i)+"  ");

    System.out.print(ip.substring(i+1, ip.length())+"  ");

    }

    k=i;count++;

    }

    }

    System.out.println("花费时间"+(System.nanoTime()-st5));

    }

    展开全文
  • 有些字符串分割需要注意了..如下例子:public class Split {public static void main(String[] args) {String str1 ="1,2,3,4,5";String str2 ="1,2,3,4,";String str3 ="1,,2,3,";String str4=",,,,";System.out....
  • java String中文字符串分割成一定长度的字符串数组/*** 几个字一组 变量控制 大于零有意义*/int num = 6;/*** 待操作的字符串*/String str = "一二三四五六七一二三四五六七一二三四五六七一二三四五六七一二三四五...
  • 关于字符串分割,我用jdk的split、apache的common的split、正则表达式、StringTokenizerr以及substring做了以下比较,比较的时间为纳秒,用一个字符串“192.168.20.121”作为示例,打印时间为:使用jdk的split切分...
  • 一、方法1、通过indexOf和substring这两个方法实现字符串分割实现逻辑:利用indexOf找出分割的字符在字符串中的位置,根据分割字符的位置切割字符串,再将分割好的字符串放进结果集。实现代码如下:/*** @...
  • Java 实例 - 字符串分割 1.返回顶部 1、 Java 实例 - 字符串分割 Java 实例 以下实例使用了 split(string) 方法通过指定分隔符将字符串分割为数组: JavaStringSplitEmp.java 文件 ...
  • 在本例子中用到 String 类的 split 方法,其实在字符串分割时可以调用 StringTokenizer,实例化一个 StringTokenizer 的对象,通过 hasMoreTokens() 与 nextToken()进行判断并打印分割后的子字符串。具体代码如下:...
  • 分离字符串字符串依所设定的条件予以分离是很常见的操作,例如指令的分离、文本文件的数据读出等。以后者而言,当在文本文件中存储以下的数据时,在读入文件后,将可以使用String的split()来协助每一行的数据分离...
  • 我们在日常开发时会经常遇到将一个字符串按照指定的字符进行分割。这时,我们往往会想到使用str.split(","),进行处理得到分割后的数组。然而, 使用split()方法在分割特殊的字符时是需要转移的。如小数点“.”下面...
  • Java字符串分割

    2016-12-06 17:34:05
    Java字符串分割
  • 方法1:采用String的split,验证代码如下:import java.util.Arrays;public class TestSplit {public static void main(String[] args) {String orignString = new String("5,8,7,4,3,9,1");String[] testString = ...
  • Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:java.lang.string.splitsplit 方法将一个字符串分割为子字符串,然后将结果作为字符串...
  • String类型的对象在用split()方法进行字符分割的时候常常会遇到用特殊字符进行分割的情况,看JDK知道split()实际上是用的正则实现的分割,当遇到一些用特殊字符作为分割标志的时候,不使用特殊手段就会抛出java.util...
  • java String中文字符串分割成一定长度的字符串数组 /** * 几个字一组 变量控制 大于零有意义 */ int num = 6; /** * 待操作的字符串 */ String str = "一二三四五六七一二三四五六七一二三四五六七一二三...
  • Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:java.lang.string.splitsplit 方法将一个字符串分割为子字符串,然后将结果作为字符串...
  • java 字符串分割

    2012-10-20 22:40:40
    java 字符串分割 代码 输入一字符串(长度小于100),10个字符一组分割存入新的数组,倒序输出。
  • 展开全部这个映射关系可以用map来做如果全是数字的话(没有A、B)那么用字符串数组来做映e5a48de588b662616964757a686964616f31333365663432射还更好importjava.util.HashMap;importjava.util.Map;publicclassTest{...
  • StringTokenizer是字符串分隔解析类型,属于:java.util包。StringTokenizer是java中object类的一个子类,继承自 Enumeration接口。此类允许一个应用程序进入一个令牌(tokens),而且StringTokenizer类用起来比...
  • 前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串。分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号、空格等等都...
  • java字符串分割

    2017-09-17 22:18:02
    java中的split函数和js中的split函数不一样。  Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后...将一个字符串分割为子字符串,然后将结果作为字符串数组返回。  stringObj.split([separato
  • 代码如下:package ...import org.apache.commons.lang3.StringUtils;/*** 字符串分割** @author 谦谦公子爱编程**/public class StringSplitUtils {public static void main(String[] args) {System.out.print...
  • JAVA 字符串分割

    2020-08-05 11:32:26
    •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到...
  • java.lang.String的split()方法, JDK 1.4 or laterpublicString[]split(Stringregex,int limit)示例代码public classStringSplit {public static voidmain(String[] args) {String sourceStr= "1,2,3,4,5";...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,054
精华内容 1,621
关键字:

字符串分割java

java 订阅