как разделить строку с помощью charAt и string .length()

#java #string #split

#java #строка #разделить

Вопрос:

разрешать только метод charAt и метод length . Большое вам спасибо!

 void runApp() {
  String str = "345, 688"; //->"345" "688"
  String value = strCut(str);
}

String strCut(String str) {
    int result = 0;

    for (int i = 0; i < str.length(); i  ) {
      if (str.charAt(3) == ',') {
        what should i write here ? ?
      }
  

Комментарии:

1. Пожалуйста, объясните подробнее, чего вы пытаетесь достичь.

2. я хотел бы разделить «345, 688″ ->»345» «688»

3. В чем причина этого ограничения? Такие собственные методы, как split , делают именно это.

4. назначение допускает только эти два метода….

Ответ №1:

Ваш код нуждается в некотором рефакторинге, попробуйте это:

 void runApp() {
 String str = "345, 688"; //->"345" "688"
 String value = strCut(str);
}

String strCut(String str) {
int result = 0;

for (int i = 0; i < str.length(); i  ) {
  int cutStringIndex;
  if (str.charAt(i) == ',') {
       cutStringIndex = i;
  }
  for (int i = 0; i < cutStringIndex(); i  ) {
  String cutStringOne = "";
  cutStringOne = cutStringOne   str.charAt(i);
  }
  for (int i = cutStringIndex()   1; i < str.length(); i  ) {
  String cutStringTwo = "";
  cutStringTwo = cutStringTwo   str.charAt(i);
  }
  cutString = cutStringOne   " "   cutStringTwo;
 return cutString;
 }
  

Это приведет к удалению запятой, которая, по-видимому, является тем, что вы искали. Я использовал только два метода, которые вы просили. По сути, этот код получает индекс запятой, затем восстанавливает две части строк, пока не достигнет точки запятой, и пропускает ее. Для вашей ситуации могут потребоваться некоторые незначительные изменения, но это должно быть то, что вы ищете.

Ответ №2:

Это можно сделать следующим образом, предположим, что строка s =»200,300,450,600″, и вам нужно разделить данную строку с помощью charAt() string.length() метода and, затем сначала добавьте ‘,’ в конец строки, как указано в приведенном ниже коде.

 String s="200,300,450,600,",str="";
        for(int i=0;i<s.length();i  ){
            char ch=s.charAt(i); 
            if(ch!=','){ //checking if particular character is not ','
               str =ch; //storing it in str string
            }
            else{
               System.out.println(str); //printing each string before ',' is found
               str="";
            }
        }
  

Результат приведенного выше кода будет: 200
300
450
600 (все числа будут напечатаны в следующей строке)

Ответ №3:

Если вы хотите использовать только charAt и string .length() тогда вы должны попробовать это

 void runApp{
    String str = "345, 688, 123";
    String values[] = strCut(str); //values[0] = 345, values[1] = 688, values[2] = 123
    for(String value : values){
        System.out.print(value   " ");
    }
}


 String[] strCut(String str) {
    int elements = 1;
    int index = 0;
    
    for(int i = 0; i < str.length(); i  ){
        if(str.charAt(i) == ',')
            elements  ;
    }
    
    String result[] = new String[elements];
    for(int i = 0; i < result.length; i  )
        result[i] = "";
        
    for (int i = 0; i < str.length(); i  ) {
      if (str.charAt(i) != ',') {
          if(str.charAt(i) != ' ')
              result[index] = result[index]   str.charAt(i);
      } 
      else index  ;
      
    }
    return resu<
}
  

Ответ №4:

Вы можете сделать это следующим образом:

 public class Main {
    public static void main(String[] args) {
        // Test
        runApp();
    }

    static void runApp() {
        String str = "345, 688"; // Expected->"345" "688"
        String value = strCut(str);
        System.out.println(value);// Display the result
    }

    static String strCut(String str) {
        // Initialise result with a "
        String result = """;

        for (int i = 0; i < str.length(); i  ) {
            if (str.charAt(i) == ',') {// Check char at the index, i
                // Add " at the end of one number and again " at the start of the next
                result  = "" "";
            } else if (str.charAt(i) != ' ') {
                result  = str.charAt(i);
            }
        }

        // Add " at the end
        result  = """;

        // Finally, return result
        return resu<
    }
}
  

Вывод:

 "345" "688"
  

Ответ №5:

если вы хотите использовать charAt() , сделайте, как показано ниже..

     ArrayList<String> stringArr= new ArrayList<String>();
    int startindex=0;
    for (int i = 0; i < str.length(); i  ) 
{
   
      if (str.charAt(i) == ',')
    {
         String partString = str.substring(startindex, i) ;
          startindex=i 1;

          stringArr.add(partString);
    }
    
        }

        String lastString = str.substring(startindex, str.length()) ;
    stringArr.add(lastString);
  

или
Вы можете просто использовать split метод, как показано ниже

 String[] parts = string.split(",");
String part1 = parts[0]; // 345
String part2 = parts[1]; // 688
  

Комментарии:

1. @TrushitShekhda это приводит… можете ли вы объяснить, что в этом плохого? и вы, кажется, скопировали мой ответ

2. Вы отредактировали свой ответ, до этого ваш код не был корректным, проверьте историю редактирования после просмотра моего ответа вы изменили свой ответ, и я не скопировал ваш ответ, наша логика такая же

Ответ №6:

Вы можете достичь этого, просто выполнив это, это даст вам желаемый результат.

 String str = "345,688";
ArrayList<String> stringArray = new ArrayList<>();
int startindex=0;
for (int i = 0; i < str.length(); i  ) {
    if(str.charAt(i) == ',') {
        String subStr = str.substring(startindex, i);
        startindex = i 1;
        stringArray.add(subStr);
    }
}
stringArray.add(str.substring(startindex));