Java 我想在不使用拆分函数的情况下拆分字符串?

Java 我想在不使用拆分函数的情况下拆分字符串?,java,Java,我想在不使用拆分的情况下拆分字符串。有人能解决我的问题吗?我很努力,但是 我找不到确切的逻辑。因为这似乎是一项作为编码实践而设计的任务,所以我只提供指导。没有你的代码,先生,虽然逻辑和代码并没有太大的区别 您需要遍历字符串的每个字符,并确定该字符是否为分隔符(例如,逗号或分号)。如果不是,则将其添加到计划返回的数组的最后一个元素中。如果是分隔符,则创建一个新的空字符串作为数组的最后一个元素,开始向其中输入字符。逻辑是:从第一个字符开始遍历整个字符串,并在找到空格时将最后一部分复制到新字符串。。没

我想在不使用拆分的情况下拆分字符串。有人能解决我的问题吗?我很努力,但是
我找不到确切的逻辑。

因为这似乎是一项作为编码实践而设计的任务,所以我只提供指导。没有你的代码,先生,虽然逻辑和代码并没有太大的区别


您需要遍历字符串的每个字符,并确定该字符是否为分隔符(例如,逗号或分号)。如果不是,则将其添加到计划返回的数组的最后一个元素中。如果是分隔符,则创建一个新的空字符串作为数组的最后一个元素,开始向其中输入字符。

逻辑是:从第一个字符开始遍历整个字符串,并在找到空格时将最后一部分复制到新字符串。。没有那么难吗?

如果不使用split()进行拆分,则无法进行拆分。唯一的其他选择是获取字符串char索引和子字符串。

方法是首先定义所需的函数。在这种情况下,可能是:

String[] split(String s, String separator)
返回类型不必是数组。它也可以是一个列表:

List<String> split(String s, String separator)
列表拆分(字符串、字符串分隔符)
代码大致如下:

  • 从头开始
  • 查找下一个出现的分隔符
  • 上一个分隔符的结尾和当前分隔符的开头之间的子字符串将添加到结果中
  • 继续执行步骤2,直到到达字符串末尾
  • 您需要考虑以下几点:

    • 如果字符串以分隔符开头或结尾,会发生什么情况
    • 如果多个分隔符相邻出现怎么办
    • 拆分空字符串的结果应该是什么?(1个空字段或0个字段)

    现在,大多数java标准库都是开源的


    在这种情况下,您可以启动

    您可以使用Java标准库来完成

    假设分隔符是

    String s = "Harry:Potter"
    int a = s.find(delimiter);
    
    然后加上

    s.substring(start, a)
    
    到一个新的字符串数组

    继续这样做,直到
    开始


    我想应该足够了。

    我假设这是家庭作业,所以我只给出一些片段作为提示:

    查找给定子串的所有引用的索引 下面是一个使用
    indexOf
    fromIndex
    参数查找较大字符串中所有子字符串的示例:

    String text = "012ab567ab0123ab";
    
    // finding all occurrences forward: Method #1
    for (int i = text.indexOf("ab"); i != -1; i = text.indexOf("ab", i+1)) {
        System.out.println(i);
    } // prints "3", "8", "14"
    
    // finding all occurrences forward: Method #2
    for (int i = -1; (i = text.indexOf("ab", i+1)) != -1; ) {
        System.out.println(i);
    } // prints "3", "8", "14"
    
    字符串API链接
      • 返回指定子字符串第一次出现的字符串内的索引,从指定索引开始。如果不存在此类事件,则返回-1
    相关问题

    从字符串中提取给定索引处的子字符串 此代码段从字符串中提取给定索引处的
    子字符串
    ,并将其放入:

    String text=“0123456789abcdefghij”;
    列表部件=新的ArrayList();
    parts.add(text.substring(0,5));
    部分。添加(文本。子字符串(3,7));
    添加(文本子字符串(9,13));
    添加部分(文本子字符串(18,20));
    系统输出打印项次(部分);//打印“[012343456,9abc,ij]”
    字符串[]partsArray=parts.toArray(新字符串[0]);
    
    一些关键想法:

    • 有效Java第二版,第25项:首选列表而非数组
      • 如果你不知道有多少部分需要提前准备的话,效果会特别好
    字符串API链接
      • 返回作为此字符串的子字符串的新字符串。子字符串从指定的
        beginIndex
        开始,并延伸到索引
        endIndex-1
        处的字符
    相关问题

    • 这是正确的答案

      import java.util.StringTokenizer;
      
      public class tt {
          public static void main(String a[]){
          String s = "012ab567ab0123ab";
      
          String delims = "ab ";
      
          StringTokenizer st = new StringTokenizer(s, delims);
                  System.out.println("No of Token = " + st.countTokens());
      
                   while (st.hasMoreTokens())
                   {
                       System.out.println(st.nextToken());
                   }
      
           }
      
      }
      

      使用字符串标记器在Java中拆分字符串,而不使用
      split

      import java.util.StringTokenizer;
      
      public class tt {
          public static void main(String a[]){
              String s = "012ab567ab0123ab";
              String delims = "ab ";
              StringTokenizer st = new StringTokenizer(s, delims);
              System.out.println("No of Token = " + st.countTokens());
              while (st.hasMoreTokens()) {
                  System.out.println(st.nextToken());
              }
          }
      }
      
      公共类MySplit{
      公共静态字符串[]mySplit(字符串文本、字符串删除器){
      java.util.List parts=new java.util.ArrayList();
      text+=deletometer;
      对于(int i=text.indexOf(delemeter),j=0;i!=-1;){
      部分。添加(文本。子字符串(j,i));
      j=i+delemeter.length();
      i=text.indexOf(delemeter,j);
      }
      返回parts.toArray(新字符串[0]);
      }
      公共静态void main(字符串[]args){
      字符串str=“012ab567ab0123ab”;
      字符串delemeter=“ab”;
      字符串结果[]=mySplit(str,delemeter);
      for(字符串s:结果)
      系统输出打印项次;
      }
      }
      
      不带PIT\u方法的公共类{
      公共静态void main(字符串arg[])
      {
      char[]str;
      字符串s=“计算机软件开发者”gautam”;
      字符串s1[];
      对于(int i=0;i

      静态字符串[]拆分(字符串abc、字符拆分){
      char[]ch=abc.toCharArray();
      字符串temp=“”;
      int j=0,长度=0,大小=0;
      对于(int i=0;i
      /**
      *我的方法在没有javas拆分的情况下拆分。
      *返回两个文本中mySplit后的单词数组;
      *使用修剪。
      */
      公共类NoJavaSplit{
      公共静态void main(字符串[]args){
      String text1=“例如一些文本”;
      String text2=“第二句话”;
      System.out.println(Arrays.toString(mySplit(text1,text2));
      }
      私有静态字符串[]mySplit(字符串text1,字符串text2){
      text1=text1.trim()+“”+text2.trim()+“”;
      字符n='';
      int massValue=0;
      对于(int i=0;iimport java.util.StringTokenizer;
      
      public class tt {
          public static void main(String a[]){
              String s = "012ab567ab0123ab";
              String delims = "ab ";
              StringTokenizer st = new StringTokenizer(s, delims);
              System.out.println("No of Token = " + st.countTokens());
              while (st.hasMoreTokens()) {
                  System.out.println(st.nextToken());
              }
          }
      }
      
      public class MySplit {
      
      public static String[] mySplit(String text,String delemeter){
          java.util.List<String> parts = new java.util.ArrayList<String>();
          text+=delemeter;        
      
          for (int i = text.indexOf(delemeter), j=0; i != -1;) {
              parts.add(text.substring(j,i));
              j=i+delemeter.length();
              i = text.indexOf(delemeter,j);
          }
      
      
          return parts.toArray(new String[0]);
      }
      
      public static void main(String[] args) {
          String str="012ab567ab0123ab";
          String delemeter="ab";
          String result[]=mySplit(str,delemeter);
          for(String s:result)
              System.out.println(s);
      }
      
      }
      
      public class WithoutSpit_method {
          public static void main(String arg[])
          {
      
             char[]str;
             String s="Computer_software_developer_gautam";
             String s1[];
             for(int i=0;i<s.length()-1;)
             {
             int lengh=s.indexOf("_",i); 
             if(lengh==-1)
             {
                 lengh=s.length();
             }
             System.out.print(" "+s.substring(i,lengh));
             i=lengh+1;
             }
      
          }
      }
      
      static String[] splitAString(String abc, char splitWith){
          char[] ch=abc.toCharArray();
          String temp="";
          int j=0,length=0,size=0;
          for(int i=0;i<abc.length();i++){
              if(splitWith==abc.charAt(i)){
                  size++;
              }
          }
          String[] arr=new String[size+1];
          for(int i=0;i<ch.length;i++){
              if(length>j){
                  j++;
                  temp="";
              }
              if(splitWith==ch[i]){
                  length++;
              }else{
                  temp +=Character.toString(ch[i]);          
              }
          arr[j]=temp;
          }
          return arr;
      }
      public static void main(String[] args) {
      
          String[] arr=splitAString("abc-efg-ijk", '-');
      
          for(int i=0;i<arr.length;i++){
              System.out.println(arr[i]);
          }
      }
      
      /**
       * My method split without javas split.
       * Return array with words after mySplit from two texts;
       * Uses trim.
       */
      
      public class NoJavaSplit {
      
          public static void main(String[] args) {
              String text1 = "Some text for example   ";
              String text2 = "   Second sentences     ";
              System.out.println(Arrays.toString(mySplit(text1, text2)));
          }
      
          private static String [] mySplit(String text1, String text2) {
              text1 = text1.trim() + " " + text2.trim() + " ";
              char n = ' ';
              int massValue = 0;
              for (int i = 0; i < text1.length(); i++) {
                  if (text1.charAt(i) == n) {
                      massValue++;
                  }
              }
              String[] splitArray = new String[massValue];
              for (int i = 0; i < splitArray.length; ) {
                  for (int j = 0; j < text1.length(); j++) {
                      if (text1.charAt(j) == n) {
                          splitArray[i] = text1.substring(0, j);
                          text1 = text1.substring(j + 1, text1.length());
                          j = 0;
                          i++;
                      }
                  }
                  return splitArray;
              }
              return null;
          }
      }
      
      public static void main(String[] args) {
      
          Scanner sc = new Scanner(System.in);
          String str = sc.nextLine();
      
          for(int i = 0; i <str.length();i++) {
              if(str.charAt(i)==' ') { // whenever it found space it'll create separate words from string
                  System.out.println();
                  continue;
              }
              System.out.print(str.charAt(i));
          }
          sc.close();
      }` 
      
      import java.util.Scanner;
      
      public class spilt {
      
          public static void main(String[] args)
          {
               Scanner input = new Scanner(System.in);
               System.out.print("Enter the String to be Spilted : ");
               String st = input.nextLine();
               Scanner str = new Scanner(st);
               while (str.hasNext())
               {
                   System.out.println(str.next());
               }
      
      
          }
      
      }
      
      public class StringWitoutPre {
      
          public static void main(String[] args) {
      
              String str = "md taufique reja";
              int len = str.length();
              char ch[] = str.toCharArray();
              String tmp = " ";
              boolean flag = false;
      
              for (int i = 0; i < str.length(); i++) {
                  if (ch[i] != ' ') {
                      tmp = tmp + ch[i];
                      flag = false;
                  } else {
                      flag = true;
                  }
                  if (flag || i == len - 1) {
                      System.out.println(tmp);
                      tmp = " ";
                  }
              }
          }
      }