при использовании массива строк в Java преобразуйте его в нижний регистр - PullRequest
6 голосов
/ 07 декабря 2011

Я получил одномерный массив строк в java, в котором я хочу изменить все строки на строчные, чтобы потом сравнить их с исходным массивом, чтобы я мог проверить, нет ли в моих строках символов верхнего регистра /массив.

Я пытался использовать x.toLowercase, но это работает только на одной строке.Могу ли я перевести всю строку в нижний регистр?

С уважением, Бренд

Ответы [ 10 ]

5 голосов
/ 07 декабря 2011

Если вам нужен короткий пример, вы можете сделать следующее

String[] array = ...
String asString = Arrays.toString(array);
if(asString.equals(asString.toLowerCase())
   // no upper case characters.
4 голосов
/ 02 марта 2017
arraylist.stream().map(s -> s.toLowerCase()).collect(Collectors.toList()) 

может помочь вам

2 голосов
/ 07 декабря 2011

Всего две строки

     String[] array = {"One", "Two"};
    for(int i=0;i<array.length;i++){
        if(!array[i].equals(array[i].toLowerCase()))
            System.out.println("It contains uppercase char");
        array[i] = array[i].toLowerCase();
    }
    for(int i=0;i<array.length;i++)
        System.out.println(array[i]);

ВЫХОД:

It contains uppercase char
It contains uppercase char
one
two
2 голосов
/ 07 декабря 2011

Нет простого способа вызвать метод для каждого элемента коллекции в Java; вам нужно будет вручную создать новый массив правильного размера, пройтись по элементам исходного массива и последовательно добавить их аналог в нижнем регистре к новому массиву.

Однако, учитывая, что вы конкретно пытаетесь сделать, вам не нужно сравнивать весь массив сразу, чтобы сделать это, и нести расходы на копирование всего. Вы можете просто перебрать массив - если вы найдете элемент , который не равен его строчной версии, вы можете вернуть false. Если вы достигли конца массива, не найдя ни одного такого элемента, вы можете вернуть true.

На самом деле это будет более эффективно, так как:

  • Вы получите дальнейшую оценку для короткого замыкания, если найдете элемент с заглавными буквами. (Представьте себе случай, когда первый элемент массива с миллионами строк имеет верхний регистр; вы только что сэкономили на миллионе вызовов строчных букв ()).
  • Вам не нужно выделять память для всего дополнительного массива, который вы не будете использовать после сравнения.
  • Даже в лучшем случае предложенный сценарий будет включать в себя одну итерацию по массиву для получения строчных версий, а затем другую итерацию по массиву для реализации равных. Выполнение обоих в одной итерации, вероятно, будет более эффективным, даже без возможности короткого замыкания.
1 голос
/ 07 февраля 2019
String  array[]= {"some values"};

String str= String.join(',',array);

String array_uppercase[]=str.toLowerCase().split(',');
1 голос
/ 15 марта 2017

Ранее мы использовали (в Java <8) </p>

String[] x = {"APPLe", "BaLL", "CaT"};
for (int i = 0; i < x.length; i++) {
    x[i] = x[i].toLowerCase();
}

Теперь в Java8:

x= Arrays.asList(x).stream().map(String::toLowerCase).toArray(String[]::new);
1 голос
/ 07 декабря 2011

Требуются два шага:

  1. Перебор массива строк
  2. Преобразование каждого в нижний регистр.
0 голосов
/ 10 июня 2016

Следующий код может помочь вам

package stringtoupercasearray;

import java.util.Scanner;

/**
 *
 * @author ROBI
 */
public class StringToUperCaseArray {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int size;
        String result = null;
        System.out.println("Please enter the size of the array: ");
        Scanner r=new Scanner(System.in);
        size=r.nextInt();
        String[] s=new String[size];
        System.out.println("Please enter the sritngs:");
        for(int i=0;i<s.length;i++){

        s[i]=r.next();

        }
        System.out.print("The given sritngs are:");
        for (String item : s) {
            //s[i]=r.nextLine();
            System.out.print(item+"\n");
        }

         System.out.println("After converting to uppercase the string is:");
        for (String item : s) {
            result = item.toUpperCase();
             System.out.println(result);
        }


    }

}
0 голосов
/ 24 ноября 2013
import java.util.*;

public class WhatEver {

  public static void main(String[] args) {
    List <String> list = new ArrayList();

    String[] x = {"APPLe", "BaLL", "CaT"};
    for (String a : x) {
      list.add(a.toLowerCase); 
    }
    x = list.toArray(new String[list.size()]);
  }
} 
0 голосов
/ 07 декабря 2011

вы можете преобразовать массив строк в одну строку, а затем преобразовать его в нижний регистр, и, пожалуйста, следуйте примеру кода ниже

public class Test {

public static void main(String[] args) {
    String s[]={"firsT ","seCond ","THird "};
    String str = " ";
      for (int i = 0; i < s.length; i++) {
      str = str + s[i];
      }

      System.out.println(str.toLowerCase());

}
}
...