Sdscompany.ru

Компьютерный журнал
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Java строку в массив char

преобразование строки в массив строк в java

У меня есть string=»name»; Я хочу преобразовать в массив строк. Как мне это сделать? Есть ли встроенная функция java? Вручную я могу это сделать, но я ищу встроенную функцию java.

Мне нужен массив, где каждый символ строки будет строкой. например, char ‘ n ‘теперь будет строкой «n», хранящейся в массиве.

15 ответов

чтобы начать вас на вашем назначении, String.split разбивает строки на регулярное выражение, это выражение может быть пустой строкой:

избавление от пустой 1-й записи остается в качестве упражнения для читателя: -)

Примечание: в Java 8, пустой первый элемент больше не включается.

вторая строка выделяет строковый массив длиной 1. Обратите внимание, что вам не нужно указывать длину самостоятельно, например:

вместо этого длина определяется количеством элементов в инициализаторе. Используя

создает массив длиной 3.

предполагая, что вам действительно нужен массив односимвольных строк (а не char[] или Character[] )

1. Использование регулярного выражения:

нулевая ширина отрицательного lookahead предотвращает соответствие шаблона в начале ввода, так что вы не получите ведущую пустую строку.

Я думаю, что в этом просто нет необходимости, так как это не будет проще, чем

конечно, если вы настаиваете, вы можете написать:

[редактирование] Если вы хотите однобуквенные строки, вы можете использовать:

к сожалению, s[0] будет пустым, но после этого последуют буквы n,a,m,e. Если это проблема, вы можете использовать, например, System.arrayCopy, чтобы избавиться от первой записи массива.

в java 8 есть метод, с помощью которого вы можете сделать это: toCharArray ():

это приводит к следующему спектру:

string array = массив символов ?

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

String[] array = yourString.split(wordSeparator);

преобразовать его в тип Char ?

просто использовать .метод tocharArray () в java

Это должно работать просто отлично в JAVA 8

как уже упоминалось, вы можете легко преобразовать исходную строку «name» в массив символов:

чтобы продолжить этот ход мыслей, вы можете преобразовать массив символов в массив строк:

в этот момент ваш stringArray будет заполнен исходными значениями из вашей исходной строки «name». Например, теперь вызываем

вернет значение » n » (в виде строки) в этот случай.

разделять пустой строкой строку.split () возвращает массив одиночных элементов, содержащий пустую строку. В большинстве случаев вы, вероятно, предпочтете получить пустой массив или null, если вы передали null, что именно то, что вы получаете с org.апаш.палата общин.lang3.StringUtils.split (str).

другой вариант-google guava сплиттер.split () и сплиттер.splitToList () что вернуть итератор и список соответственно. В отличие от версии Apache Splitter будет бросать NPE на null :

Если вам нужен список, а не итератор, используйте сплиттер.splitToList ().

метод String.split будет генерировать пустой 1-й, вы должны удалить его из массива. Это скучно.

вы могли бы использовать string.chars().mapToObj(e -> new String(new char[] )); , хотя это довольно долго и работает только с java 8. Вот еще несколько методов:

string.split(«»); (Has an extra whitespace character at the beginning of the array if used before Java 8) string.split(«|»); string.split(«(?!^)»); Arrays.toString(string.toCharArray()).substring(1, string.length() * 3 + 1).split(«, «);

последний просто излишне долго, это просто для удовольствия!

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

это делает массив слов, разделяя строку на каждое помещение:

это создает следующий массив:

протестировано в Java 8

здесь есть преобразование простой строки в строковый массив с помощью метода split.

Java строку в массив char

Java Char Array

When we are dealing with a handful of data of the same type, we can use a different variable for each. But if we are working with arbitrarily more numbers of data of same type, array can be a good choice because it is a simple data structure to work with. List or Set is also a good choice, but arrays is much simpler to manipulate and work with. We explore below how do we work with Java Char Array. We will check different common scenario we encounter when working with char arrays.

Java Char Array Declaration

Declaring a variable to be a char array is straightforward and simple in Java. We can use the square brackets to do this. For example:

The square brackets is placed right after the word char and before the variable name. Arbitrarily, we can also put the square brackets at the end of the variable name like shown below.
Both ways are perfectly fine way of declaring a Java Char Array.

Java Char Array Declaration With Instance And Initial Size

When we work with arrays, we typically assign an instance right away with a default size. For example:
This declares a Java Char Array and assign an instance with size 5. Each item of the char array, being of primitive type, contains the char equivalent of the byte value 0. We can also add code to assign values after our declaration, for example:

Java Char Array Declaration With Instance And Values

Sometimes we already know beforehand what is the initial contents of our array. For this case, we can declare our Java Char Array variable and assign an instance with values already. Sample code is shown below:
This declares a Java Char Array with instance of size 5. The first element is a, the second element is z, the third element is c, the fourth is m, and the last one is x.

Читать еще:  Заполнение двумерного массива java

Java Char Array Declaration Initialize After Declaration

For the scenario where we don’t know beforehand the size and contents of our array, but we want to declare it anyways. And then we will know at later point what is the initial content, we can initialize the contents of an array later. Below is an example:
The three dots just means there might be some code in between the two lines, meaning something happens before we could initialize our Java Char Array. Of course the code below may also work:

Java Char Array Loop Values

A common scenario we encounter is we sometimes need to loop through and visit each value in our array. We can use the Java 5 for loop for this case as shown below:
That will output like below:
If we do not like this shortcut way of loop, we can do a longer version using below:
Which will result with the same output.

Java Char Array Size or Length

This was actually shown in previous example, but below is a sample way if we want to know the length of an existing char array.

This will output 5 as this is the number of items in the array.

Java Char Array Sorting

Another common use case when working with arrays is if we want to sort the elements. This is easy to do as Java provides a utility out of the box. We can use Arrays.sort() for this as shown below:

The output is the contents of the array in sorted order.
If we want to be more adventurous, we can just write our own sorting implementation.
The code above will sort and output the expected ordered result.

Java Char Array To List Conversion

Sometimes when array is not enough, we may want to convert our Java Char Array to a List. Below is a way to do that:

As shown above, we first need to convert char[] to Character[]. This is because we can’t create a List of char as Collections api requires Object and not primitives. For that we used apache common’s ArrayUtils.
And then we converted it to List of Character.

Класс String

В языке программирования Java строки — это объект, который представляет из себя последовательность символов. Здесь мы рассмотрим методы создания и управления строками.

Создание строк

Самый простой способ создания строки:

Создание строки из символа:

Создание строки из массива символов:

Также задать диапазон символьного массива. Для этого нужно указать начало диапазона и количество символов:

Получение длины строки

length() — возвращает количество символов в строке.

Проверка строки на пустоту

isEmpty() — проверяет, пустая строка или нет.

Конкатенация (объединение) строк

concat(String str) — присоединяет строку str к концу родительской строки.

Операторы + и += для String

Оператор «+» — аналог метода concat для String.

Оператор «+=» — присоединяет к строке, стоящей до оператора строку, стоящую после этого оператора.

Сравнивание строк

equals(String anotherString) — сравнивает строки по значению с учетом регистра.

equalsIgnoreCase(String anotherString) — сравнивает строки по значению без учета регистра

Разница между == и equals()

Оператор == сравнивает ссылаются ли две ссылки на один и тот же объект, в то время как equals() сравнивает содержат ли два объекта одни и те же данные.

Форматирование строки

format(String format, Object… args) — возвращает отформатированную строку, используя специальный формат строки и аргументы.

Поиск подстроки в строке

indexOf(String str) — возвращает индекс первого символа подстроки в строке.

indexOf(String str, int fromIndex) — возвращает индекс первого символа подстроки в строке, начиная с указанной позиции.

lastIndexOf(String str) — поиск последнего вхождения строки.

lastIndexOf(String str, int fromIndex) — поиск последнего вхождения строки. Он осуществляется назад, от указанной позиции до начала строки.

startsWith(String prefix) — проверяет, начинается ли строка с указанной строки.

startsWith(String prefix, int toffset) — проверяет, начинается ли строка в указанной позиции с указанной строки.

endsWith(String str) — проверяет заканчивается ли строка на указанную строку.

contains(CharSequence s) — возвращает true, если строка содержит указанную последовательность символов.

Сортировка строк

compareTo(String anotherString) — сравнивает указанную строку. Используется при сортировке. Здесь учитывается регистр и слова с верхним регистром стоят выше слова с нижним регистром.Если строки совпадают, то возвращается 0, если вызывающая строка меньше строки string то возвращается число меньше нуля, вызывающая строка больше строки string, то возвращается число больше нуля.

compareToIgnoreCase(String anotherString) — сравнивает указанную строку. Здесь не учитывается регистр.

Читать еще:  Form name javascript

Получение хеш-кода строки

hashCode() — возвращает хеш-код строки.

Хеш-код у двух одинаковых строк будет одним и тем же.

Изменение регистра строки

toLowerCase() — конвертирует все символы строки в нижний регистр.

toUpperCase() — конвертирует все символы строки в верхний регистр.

Удаление лишних пробелов

trim() — удаляет пробелы в начале и конце строки.

Получение символа из строки

charAt(int index) — возвращает char со значением равным символу с индексом index.

Получение подстроки из строки

substring(int beginIndex, int endIndex) — возвращает подстроку начиная с beginIndex (включительно) до endIndex (не включительно).

substring(int beginIndex) — возвращает подстроку начиная с beginIndex (включительно) до конца строки.

Замена символов и строк

replace(char oldChar, char newChar) — заменяет в строке один символ на другой.

replace(CharSequence target, CharSequence replacement) — заменяет одну подстроку другой.

Получение строковых представлений классов

valueOf(boolean b) — возвращает значение булевой переменной в виде стоки.

valueOf(char c) — возвращает значение символьной переменной в виде стоки.

valueOf(char[] data) — возвращает значение массива символов в виде стоки.

valueOf(char[] data, int offset, int count) — возвращает значение массива символов в виде стоки.

valueOf(double d) — возвращает значение double-переменной в виде стоки.

valueOf(float f) — возвращает значение float-переменной в виде стоки.

valueOf(int i) — возвращает значение int-переменной в виде стоки.

valueOf(long l) — возвращает значение long-переменной в виде стоки.

valueOf(Object obj) — возвращает строковое представление объекта.

Проверка строки регулярным выражением

matches(String regex) — проверяет, удовлетворяет ли строка указанному регулярному выражению.

Перевод строки в байты

getBytes() — возвращает представление строки в виде массива байт.

Преобразование строки в массив java

Для заданной строки задача состоит в том, чтобы преобразовать эту строку в массив символов в Java.

Примеры:

    Метод 1: Наивный подход

  • Шаг 1: Получить строку.
  • Шаг 2: Создайте массив символов той же длины, что и строки.
  • Шаг 3: Перейдите через строку, чтобы скопировать символ с i-го индекса строки в i-й индекс массива.
  • Шаг 4: Вернуть или выполнить операцию над массивом символов.

Ниже приведена реализация вышеуказанного подхода:

У меня есть string=»name»; Я хочу преобразовать в массив строк. Как мне это сделать? Есть ли встроенная функция java? Вручную я могу это сделать, но я ищу встроенную функцию java.

Мне нужен массив, где каждый символ строки будет строкой. например, char ‘ n ‘теперь будет строкой «n», хранящейся в массиве.

15 ответов

чтобы начать вас на вашем назначении, String.split разбивает строки на регулярное выражение, это выражение может быть пустой строкой:

избавление от пустой 1-й записи остается в качестве упражнения для читателя: -)

Примечание: в Java 8, пустой первый элемент больше не включается.

вторая строка выделяет строковый массив длиной 1. Обратите внимание, что вам не нужно указывать длину самостоятельно, например:

вместо этого длина определяется количеством элементов в инициализаторе. Используя

создает массив длиной 3.

предполагая, что вам действительно нужен массив односимвольных строк (а не char[] или Character[] )

1. Использование регулярного выражения:

нулевая ширина отрицательного lookahead предотвращает соответствие шаблона в начале ввода, так что вы не получите ведущую пустую строку.

Я думаю, что в этом просто нет необходимости, так как это не будет проще, чем

конечно, если вы настаиваете, вы можете написать:

[редактирование] Если вы хотите однобуквенные строки, вы можете использовать:

к сожалению, s[0] будет пустым, но после этого последуют буквы n,a,m,e. Если это проблема, вы можете использовать, например, System.arrayCopy, чтобы избавиться от первой записи массива.

в java 8 есть метод, с помощью которого вы можете сделать это: toCharArray ():

это приводит к следующему спектру:

string array = массив символов ?

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

String[] array = yourString.split(wordSeparator);

преобразовать его в тип Char ?

просто использовать .метод tocharArray () в java

Это должно работать просто отлично в JAVA 8

как уже упоминалось, вы можете легко преобразовать исходную строку «name» в массив символов:

чтобы продолжить этот ход мыслей, вы можете преобразовать массив символов в массив строк:

в этот момент ваш stringArray будет заполнен исходными значениями из вашей исходной строки «name». Например, теперь вызываем

вернет значение » n » (в виде строки) в этот случай.

разделять пустой строкой строку.split () возвращает массив одиночных элементов, содержащий пустую строку. В большинстве случаев вы, вероятно, предпочтете получить пустой массив или null, если вы передали null, что именно то, что вы получаете с org.апаш.палата общин.lang3.StringUtils.split (str).

другой вариант-google guava сплиттер.split () и сплиттер.splitToList () что вернуть итератор и список соответственно. В отличие от версии Apache Splitter будет бросать NPE на null :

Если вам нужен список, а не итератор, используйте сплиттер.splitToList ().

метод String.split будет генерировать пустой 1-й, вы должны удалить его из массива. Это скучно.

вы могли бы использовать string.chars().mapToObj(e -> new String(new char[] )); , хотя это довольно долго и работает только с java 8. Вот еще несколько методов:

string.split(«»); (Has an extra whitespace character at the beginning of the array if used before Java 8) string.split(«|»); string.split(«(?!^)»); Arrays.toString(string.toCharArray()).substring(1, string.length() * 3 + 1).split(«, «);

последний просто излишне долго, это просто для удовольствия!

Читать еще:  Код ошибки 192 в плей маркете

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

это делает массив слов, разделяя строку на каждое помещение:

это создает следующий массив:

протестировано в Java 8

здесь есть преобразование простой строки в строковый массив с помощью метода split.

В строке содержатся слова с маленьких букв. Нужно заменить первые буквы слов, на большие.

Я решил сделать так:

  1. Разбить строку на символы.
  2. Заменить маленькие символы большими.
  3. Массив символов превратить в строку. char[] b;

Я застрял на 3 шаге. Может кто написать как это сделать? Можно объяснением или блоком кода.

7 ответов 7

Делать можно по-разному, конечно, но в Java есть методы для работы со строками. По-хорошему, нужно делать так:

  1. Разбить строку по пробелам на слова и записать в массив
  2. Пройтись по массиву, заменяя первые символы на символы верхнего регистра и складывая в одну строку.

Никаких массивов char использовать не нужно. Вам понадобятся следующие методы String и Character :

  1. split(String regex) — делит строку на массив по какому-то правилу
  2. charAt(int index) — возвращает символ по указанному индексу
  3. toUpperCase(char ch) — переводит в верхний регистр
  4. substring(int beginIndex) — возвращает подстроку, начиная с указанного индекса

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

Проходимся по строке:

    Если символ на данной позиции пробел, то запоминаем это событие

Иначе, если символом на предыдущей позиции был пробел по Java (обычный пробел, табуляция и т.д.) либо начало строки, то заменяем его на символ верхнего регистра

Вам понадобятся следующие методы StringBuilder и Character :

  1. length() — возвращает длину строки
  2. charAt(int index) — возвращает символ на заданной позиции
  3. isWhitespace(char ch) — проверяет, является ли символ пробелом по Java
  4. setCharAt(int index, char ch) — заменяет символ на заданной позиции на указанный
  5. toUpperCase(char ch) — переводит в верхний регистр

Java строку в массив char

Наверно, ни для кого не является секретом, что строки в Java представлены в виде массива символов char[]. При этом каждый символ в памяти занимает 2 байта (16 бит), т.к. Java использует кодировку UTF-16.

Например, если строка содержит слово на английском языке, то 8 первых бит у каждого символа будут равны 0, поскольку символ ASCII может быть представлен одним байтом вместо двух.

Многим символам необходимо 16 бит для их представления, но по статистике для большинства данных требуется только 8 бит, представленных символами LATIN-1. Исходя из этого можно попробовать улучшить потребление памяти и производительность.

Также важно то, что строки обычно занимают большую часть пространства кучи JVM. И, как сказано выше, в большинстве случаев они могут занимать места в два раза больше, чем им в действительности необходимо.

В этой статье мы обсудим опцию Compressed String (сжатая строка), представленную в JDK 6, и новую Compact String (компактную строку), появившуюся в JDK 9. Обе опции были разработаны для оптимизации потребления памяти строками в JVM.

В Java 9 вернули концепцию компактных строк.

Это означает, что всякий раз, когда мы создаем строку символы которой могут быть представлены с использованием одного байта – в LATIN-1, то для хранения строк будет использоваться байтовый массив. Но, если какой-либо символ требует более 8 бит для своего представления, то каждый символы сроки будет занимать два байта (UTF-16).

Теперь вопрос — как будут работать все операции со строками? Как будут различаться кодировки строк?

Для решения этой проблемы было внесено ещё одно изменение во внутреннюю реализацию String. Теперь данный класс содержит поле private final byte coder, которое хранит эту информацию.

Если строка содержит только LATIN-1, значение кодировщика будет равно 0, поэтому длина строки будет равна длине байтового массива.

Если строка представлена в виде UTF-16, то значение кодировщика будет равно 1, и, следовательно, длина будет вдвое меньше размера фактического байтового массива.

В Compressed Strings в JDK 6 основной проблемой было то, что конструктор String принимал в качестве аргумента только массив символов char[] не смотря на то, что многие операции со String зависят от представления char[], а не от байтового массива. Из-за этого приходилось производить распаковку, что сказывалось на производительности.

Обратите внимание, что в случае Compact String содержание дополнительного поля coder также может увеличить нагрузку. Чтобы снизить «стоимость» кодера и распаковку байтов в символы (в случае представления UTF-16), некоторые методы являются встроенными, и код ASM, сгенерированный компилятором JIT, также был улучшен.

Эти изменение привели к некоторым неожиданным результатам. LATIN-1 indexOf(String) вызывает встроенный метод, тогда как indexOf(char) — нет. В случае UTF-16 оба эти метода вызывают встроенный метод. Эта проблема касается только строки LATIN-1 и будет исправлена в будущих выпусках.

Таким образом, с точки зрения производительности, компактные строки Compact Strings лучше, чем сжатые строки Compressed Strings.

Чтобы узнать, сколько памяти сохранено с помощью Compact Strings, были проанализированы различные дампы кучи (heap) Java-приложений. И, хотя результаты сильно зависели от конкретных приложений, общие улучшения были почти всегда значительными.

Ссылка на основную публикацию
Adblock
detector