[Java] كيفية تقسيم سلسلة مفصولة بفواصل؟


Answers

حسنا ، أنت تريد أن تنقسم ، أليس كذلك؟

String animals = "dog, cat, bear, elephant, giraffe";

String[] animalsArray = animals.split(",");

إذا كنت تريد أيضًا التخلص من المسافات البيضاء حول العناصر:

String[] animalsArray = animals.split("\\s*,\\s*");
Question

لدي سلسلة ذات طول غير معروف تبدو كهذا

"dog, cat, bear, elephant, ..., giraffe"

ما هي الطريقة المثلى لتقسيم هذه السلسلة في الفواصل بحيث يمكن لكل كلمة أن تصبح عنصرًا في ArrayList؟

فمثلا

List<String> strings = new ArrayList<Strings>();
// Add the data here so strings.get(0) would be equal to "dog",
// strings.get(1) would be equal to "cat" and so forth.



هناك دالة تسمى replaceAll() التي يمكنها إزالة كل المسافات البيضاء باستبدالها بكل ما تريد. كمثال

String str="  15. 9 4;16.0 1"
String firstAndSecond[]=str.replaceAll("\\s","").split(";");
System.out.println("First:"+firstAndSecond[0]+", Second:"+firstAndSecond[1]);

سوف أعطيك:

First:15.94, Second:16.01



إزالة جميع المسافات البيضاء وإنشاء قائمة ذات حجم ثابت أو غير قابل للتغيير (انظر محرر مستندات واجهة المستخدم asList )

final String str = "dog, cat, bear, elephant, ..., giraffe";
List<String> list = Arrays.asList(str.replaceAll("\\s", "").split(","));
// result: [dog, cat, bear, elephant, ..., giraffe]

من الممكن أيضًا استخدام replaceAll(\\s+", "") ولكن أقصى كفاءة تعتمد على حالة الاستخدام. (راجعGurselKoca answer على إزالة المسافات البيضاء من السلاسل في Java )




للتأكد من اكتمالها ، باستخدام مكتبة Guava ، ستفعل: Splitter.on(",").split(“dog,cat,fox”)

مثال آخر:

String animals = "dog,cat, bear,elephant , giraffe ,  zebra  ,walrus";
List<String> l = Lists.newArrayList(Splitter.on(",").trimResults().split(animals));
// -> [dog, cat, bear, elephant, giraffe, zebra, walrus]

إرجاع Splitter.split() على Iterable ، لذلك إذا كنت بحاجة إلى قائمة التفاف عليه في Lists.newArrayList() كما أعلاه. خلاف ذلك اذهبوا مع Iterable ، على سبيل المثال:

for (String animal : Splitter.on(",").trimResults().split(animals)) {
    // ...
}

لاحظ كيف trimResults() جميع احتياجاتك التشذيب دون الحاجة إلى تعديل regexes لحالات الزاوية ، كما هو الحال مع String.split() .

إذا كان مشروعك يستخدم الجوافة بالفعل ، فيجب أن يكون هذا هو الحل المفضل لديك. انظر الوثائق الفاصل في Guava User Guide أو javadocs لمزيد من خيارات التكوين.




يمكنك تقسيمها وجعل صفيف ثم الوصول إلى مثل مجموعة

String names = "prappo,prince,ahsan";
String[] namesList = names.split(",");

يمكنك الوصول مثل

String name1 = names[0];
String name2 = names[1];

أو باستخدام حلقة

for(String name : namesList){
System.out.println(name);
}

أتمنى أنها تساعدك .






Links