জাভাতে স্ট্রিং থেকে স্ট্রিং অ্যারে রূপান্তর


115

আমার কাছে string = "name"; স্ট্রিং অ্যারেতে রূপান্তর করতে চাই a আমি এটা কিভাবে করব? ফাংশনে কোনও জাভা তৈরি হয়েছে? ম্যানুয়ালি আমি এটি করতে পারি তবে আমি ফাংশনে অন্তর্ভুক্ত একটি জাভা অনুসন্ধান করছি।

আমি একটি অ্যারে চাই যেখানে স্ট্রিংয়ের প্রতিটি অক্ষর একটি স্ট্রিং হবে। চর 'n' এর মতো এখন অ্যারেতে স্ট্রিং "n" হবে।


10
আমার ধারণা আপনি বোঝাতে চাইছেন না String[] ary = new String[] { "name" };, আপনার কোন অপারেশন দরকার? উদাহরণস্বরূপ অক্ষর বিভক্ত?
আরএসপি

আপনি কি একটি স্ট্রিং অ্যারের মানে? আপনি কীভাবে এটির জন্য একটি ফাংশন রাখতে পারেন, এটি কেবলমাত্র হবে: স্ট্রিং [] অ্যারে = Name "নাম"}; বা আপনি একটি চরিত্র অ্যারে বোঝাতে চান?
উডি

1
আমি একটি অ্যারে চাই যেখানে স্ট্রিংয়ের প্রতিটি অক্ষর একটি স্ট্রিং হবে। চর 'এন' এর মতো এখন স্ট্রিং "এন" হবে একটি অ্যারেতে সংরক্ষণ করা
রিয়ানা

উত্তর:


200

আপনার অ্যাসাইনমেন্টটি শুরু করার জন্য, String.splitএকটি নিয়মিত অভিব্যক্তিতে স্ট্রিং বিভক্ত হয় এবং এই এক্সপ্রেশনটি খালি স্ট্রিং হতে পারে:

String[] ary = "abc".split("");

অ্যারের ফলন:

(java.lang.String[]) [, a, b, c]

খালি ১ ম এন্ট্রি থেকে মুক্তি পাওয়া পাঠকের জন্য অনুশীলন হিসাবে বাকি রয়েছে :-)

দ্রষ্টব্য: জাভা 8-তে, খালি প্রথম উপাদানটি আর অন্তর্ভুক্ত থাকবে না।


21
দ্রষ্টব্য: jdk8 ব্যবহার করে, খালি প্রথম প্রবেশটি আর ফলাফলের অ্যারেতে অন্তর্ভুক্ত হবে না। স্ট্যাকওভারফ্লো.com
অ্যালেক্সিস সি।

42
String strName = "name";
String[] strArray = new String[] {strName};
System.out.println(strArray[0]); //prints "name"

দ্বিতীয় লাইনটি 1 এর দৈর্ঘ্যের সাথে একটি স্ট্রিং অ্যারে বরাদ্দ করে মনে রাখবেন যে আপনাকে নিজের দৈর্ঘ্য নির্দিষ্ট করার দরকার নেই যেমন:

String[] strArray = new String[1];

পরিবর্তে, ইনালিটালাইজারের উপাদানগুলির সংখ্যা দ্বারা দৈর্ঘ্য নির্ধারণ করা হয়। ব্যবহার

String[] strArray = new String[] {strName, "name1", "name2"};

3 দৈর্ঘ্যের একটি অ্যারে তৈরি করে।


22
সত্যই প্রশ্নের উত্তর দেয় না।
atamanroman

1
প্রশ্নের পুনর্বিবেচনার ইতিহাসটি দেখুন এবং আপনি দেখতে পাবেন যে প্রশ্নটি সম্পাদনার আগে আলাদা কিছু জিজ্ঞাসা করছে। এই উত্তরটি প্রথম সংস্করণে উত্তর দেয়।
f1sh

14

ধরে নিচ্ছি আপনি সত্যই একক অক্ষরের স্ট্রিংগুলির একটি অ্যারে চান (না char[]বা নয় Character[])

1. একটি রেজেক্স ব্যবহার:

public static String[] singleChars(String s) {
    return s.split("(?!^)");
}

শূন্য প্রস্থের নেতিবাচক চেহারাটি ইনপুটটির শুরুতে প্যাটার্নের মিলটিকে বাধা দেয়, সুতরাং আপনি কোনও খালি স্ট্রিং পাবেন না।

২. পেয়ারা ব্যবহার :

import java.util.List;

import org.apache.commons.lang.ArrayUtils;

import com.google.common.base.Functions;
import com.google.common.collect.Lists;
import com.google.common.primitives.Chars;

// ...

public static String[] singleChars(String s) {
    return
        Lists.transform(Chars.asList(s.toCharArray()),
                        Functions.toStringFunction())
             .toArray(ArrayUtils.EMPTY_STRING_ARRAY);
}

1
সেই রেজিপ্সপই সেরা আইএমও। সাবধান হন যে জাভা 8 যেভাবেই সেই নির্দিষ্ট সমস্যাটিকে স্থির করেছে।
shkschneider

13

আমি অনুমান করি যে এটির জন্য কেবল কোনও প্রয়োজন নেই, কারণ এটি এর চেয়ে সহজতর হবে না

String[] array = {"name"};

অবশ্যই যদি আপনি জেদ করেন তবে আপনি লিখতে পারেন:

static String[] convert(String... array) {
   return array;
}

String[] array = convert("name","age","hobby"); 

[সম্পাদনা] আপনি যদি একক-বর্ণের স্ট্রিংগুলি চান তবে আপনি এটি ব্যবহার করতে পারেন:

String[] s = "name".split("");

দুর্ভাগ্যক্রমে s [0] খালি থাকবে, তবে এর পরে n, a, m, e অক্ষরগুলি অনুসরণ করবে। এটি যদি সমস্যা হয় তবে প্রথম অ্যারে প্রবেশ থেকে মুক্তি পেতে আপনি উদাহরণস্বরূপ System.arrayCopy ব্যবহার করতে পারেন।


আমি এমন একটি অ্যারে চাই যেখানে স্ট্রিংয়ের প্রতিটি অক্ষর নিজেই একটি স্ট্রিং হবে। চর 'এন' এর মতো এখন স্ট্রিং "এন" হবে একটি অ্যারেতে সংরক্ষণ করা
রিয়ানা

@ লন্ডেই আমার কাছে এই স্ট্রিং ডেট রয়েছে = "2013/01/05" এবং যখন আমি .স্প্লিট ("/") ব্যবহার করি, এটি খালি স্ট্রিং [0] হিসাবে ফিরে আসে না এবং এটি ঠিক কাজ করে। আমার নিয়মিত এক্সপ্রেশন স্প্লিটার এবং আপনার মধ্যে কোন পার্থক্য আছে?
বেহজাদ

@ বেহজাদ এএফাইক আপনার খালি প্রবেশের সাথে মজাদার আচরণ কেবল শূন্য নিদর্শনগুলির জন্য, আপনার কোনওটিই কিছু সীমানা ছাড়াই নেই।
ল্যান্ডেই

@ লানডেই আমাকে জানতে দিন যে আমি আপনার অর্থ পেয়েছি। আপনি বলতে চাইছেন যে কেবল "" "বিভক্ত ফাংশনটিতে 0 ব্যবহার করে প্রথম অ্যারের মান হিসাবে ফিরে আসে? হ্যাঁ?
বেহজাদ

12
String data = "abc";
String[] arr = explode(data);

public String[] explode(String s) {
    String[] arr = new String[s.length];
    for(int i = 0; i < s.length; i++)
    {
        arr[i] = String.valueOf(s.charAt(i));
    }
    return arr;
}

11

জাভা 8-তে একটি পদ্ধতি রয়েছে যা দিয়ে আপনি এটি করতে পারেন: টু চ্যারআরে ():

String k = "abcdef";
char[] x = k.toCharArray();

নিম্নলিখিত অ্যারে এ ফলাফল:

[a,b,c,d,e,f]

যদিও স্ট্রিং অ্যারে নয়, এটি এমন ক্ষেত্রে উপযুক্ত যেখানে আপনার String.charAt(0)অকারণে একক অক্ষরের স্ট্রিংগুলিতে মূly় অ্যাক্সেসের পরিবর্তে অক্ষরগুলি দরকার ! ;)
বরুণ

আপনি আমার জীবন @ ফনজি বাঁচান
অমিত শর্মা

5

স্ট্রিং অ্যারে = অক্ষরের অ্যারে?

বা আপনার কাছে একাধিক শব্দের একটি স্ট্রিং রয়েছে যার প্রত্যেকটিতে একটি অ্যারের উপাদান হওয়া উচিত?

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


আমি একটি অ্যারে চাই যেখানে স্ট্রিংয়ের প্রতিটি অক্ষর একটি স্ট্রিং হবে। চর 'এন' এর মতো এখন স্ট্রিং "এন" হবে একটি অ্যারেতে সংরক্ষণ করা
রিয়ানা

4

.toCharArray()জাভাতে কেবল পদ্ধতিটি ব্যবহার করুন :

String k = "abc";
char[] alpha = k.toCharArray();

জাভা 8 এ এটি ঠিক কাজ করা উচিত।


3

এটি টাইপ রূপান্তর Char?

http://www.javadb.com/convert-string-to-character-array


1
কেন এই নিম্নমানের? এটি দেখতে যেমন জিজ্ঞাসা করা হয়েছিল তার সমাধানের মতো (যেমনটি আমি যাইহোক এটি বুঝতে পারি) ... যদিও আমি মনে করি আপনার অর্থ char[]=))
এক্সেল

2

আপনি এটি ব্যবহার করতে পারেন string.chars().mapToObj(e -> new String(new char[] {e}));, যদিও এটি বেশ দীর্ঘ এবং শুধুমাত্র জাভা ৮ এর সাথে কাজ করে Here এখানে আরও কয়েকটি পদ্ধতি রয়েছে:

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(", ");

শেষটি কেবল অযথা দীর্ঘ, এটি কেবল মজাদার জন্য!


2

একটি অতিরিক্ত পদ্ধতি:

যেমনটি আগেই উল্লেখ করা হয়েছিল, আপনি মূল স্ট্রিং "নাম "টিকে একটি চর অ্যারেতে সহজেই রূপান্তর করতে পারেন:

String originalString = "name";
char[] charArray = originalString.toCharArray();

চিন্তার এই ট্রেন চালিয়ে যেতে, আপনি তারপরে চর অ্যারেটিকে স্ট্রিং অ্যারে রূপান্তর করতে পারেন:

String[] stringArray = new String[charArray.length];
for (int i = 0; i < charArray.length; i++){
    stringArray[i] = String.valueOf(charArray[i]);
}

এই মুহুর্তে, আপনার স্ট্রিংআরে আপনার মূল স্ট্রিং "নাম" থেকে মূল মানগুলিতে পূর্ণ হবে। উদাহরণস্বরূপ, এখন কল করা

System.out.println(stringArray[0]);

এই ক্ষেত্রে মান "এন" (স্ট্রিং হিসাবে) ফিরিয়ে দেবে।


2

স্ট্রিং.স্প্লিট () দিয়ে একটি খালি স্ট্রিং বিভক্ত করা খালি স্ট্রিং সহ একটি একক উপাদান অ্যারে প্রদান করে । অধিকাংশ ক্ষেত্রে আপনি সম্ভবত আপনি একটি নাল, যা ঠিক কি আপনার সাথে পেতে পাস একটি খালি অ্যারে, অথবা একটি নাল পেতে পছন্দ org.apache.commons.lang3.StringUtils.split (STR)

import org.apache.commons.lang3.StringUtils;

StringUtils.split(null)       => null
StringUtils.split("")         => []
StringUtils.split("abc def")  => ["abc", "def"]
StringUtils.split("abc  def") => ["abc", "def"]
StringUtils.split(" abc ")    => ["abc"]

আরেকটি বিকল্প হ'ল গুগল পেয়ারা স্প্লিটার.স্প্লিট () এবং স্প্লিটার.স্প্লিটটোলিস্ট () যা কোনও পুনরাবৃত্তকারী এবং একটি তালিকা যথাযথভাবে ফিরিয়ে দেয়। অ্যাপাচি সংস্করণটির বিপরীতে স্প্লিটার একটি এনপিই নিক্ষেপ করবে null:

import com.google.common.base.Splitter;

Splitter SPLITTER = Splitter.on(',').trimResults().omitEmptyStrings();

SPLITTER.split("a,b,   c , , ,, ")     =>  [a, b, c]
SPLITTER.split("")                     =>  []
SPLITTER.split("  ")                   =>  []
SPLITTER.split(null)                   =>  NullPointerException

যদি আপনি পুনরুক্তির পরিবর্তে একটি তালিকা চান তবে স্প্লিটার.স্প্লিটটিওলিস্ট () ব্যবহার করুন ।


1
/**
 * <pre>
 * MyUtils.splitString2SingleAlphaArray(null, "") = null
 * MyUtils.splitString2SingleAlphaArray("momdad", "") = [m,o,m,d,a,d]
 * </pre>
 * @param str  the String to parse, may be null
 * @return an array of parsed Strings, {@code null} if null String input
 */
public static String[] splitString2SingleAlphaArray(String s){
    if (s == null )
        return null;
    char[] c = s.toCharArray();
    String[] sArray = new String[c.length];
    for (int i = 0; i < c.length; i++) {
        sArray[i] = String.valueOf(c[i]);
    }
    return sArray;
}

পদ্ধতিটি String.splitখালি 1 ম জেনারেট করবে, আপনাকে এটি অ্যারে থেকে সরিয়ে ফেলতে হবে। এটা বিরক্তিকর.


1

এই প্রশ্নের শিরোনামের ভিত্তিতে, আমি এখানে এসেছি একটি স্ট্রিংকে কিছু সীমানার দ্বারা বিভক্ত সাবস্ট্রিংগুলির একটি অ্যারে রূপান্তর করতে চাই। আমি সেই উত্তরটি অন্যদের জন্য এখানে যুক্ত করব যাদের একই প্রশ্ন থাকতে পারে।

এটি প্রতিটি জায়গাতে স্ট্রিংকে বিভক্ত করে শব্দের একটি অ্যারে তৈরি করে:

String str = "string to string array conversion in java";
String delimiter = " ";
String strArray[] = str.split(delimiter);

এটি নিম্নলিখিত অ্যারে তৈরি করে:

// [string, to, string, array, conversion, in, java]

উৎস

জাভা 8 তে পরীক্ষা করা হয়েছে


1

এখানে বিভাজন পদ্ধতি ব্যবহার করে স্ট্রিং অ্যারেতে সরল স্ট্রিং রূপান্তরিত হয়েছে।

String [] stringArray="My Name is ABC".split(" ");

আউটপুট

stringArray[0]="My";
stringArray[1]="Name";
stringArray[2]="is";
stringArray[3]="ABC";
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.