জাভা: একটি নির্দিষ্ট অক্ষরের পরে শুরু করে স্ট্রিং থেকে একটি স্ট্রিংস নেওয়া


195

আমার একটি স্ট্রিং রয়েছে:

/abc/def/ghfj.doc

আমি এটি থেকে বের করতে চাই ghfj.doc, অর্থাত্ শেষের পরে সাবস্ট্রিং /, বা /ডান থেকে প্রথম ।

কেউ দয়া করে কিছু সাহায্য দিতে পারেন?


38
দেখুন, আমি প্রশ্ন জিজ্ঞাসার আগে নিজেই উত্তর অনুসন্ধানের মান বুঝতে পেরেছি, তবে বিষয়টির সত্যতা হ'ল এই প্রশ্নটি আমার অনুসন্ধানকে আরও সহজ করে তুলেছে .. প্রথম হিট করার পরে আমি ঠিক কী চেয়েছিলাম। জাভাডোকগুলির সাথে পরামর্শের চেয়ে দ্রুত। এই প্রশ্নটি এখানেই রয়েছে। ডাউনভোটস কেন?
এরিক

3
যদিও এটি আপনার আসল প্রশ্নের থেকে কিছুটা পৃথক: আপনার উদাহরণে org.apache.commons.io.FilenameUtils.getBaseName আপনার নিজের স্ট্রিং ক্রিয়াকলাপগুলি করার চেয়ে অনেক বেশি নির্ভরযোগ্য।
শ্যাফার

4
@ এরিক আমি আপনার মন্তব্যে সম্পূর্ণরূপে একমত কারণ এটি আমার প্রশ্নের প্রথম গুগল ফলাফল এবং গ্রহণযোগ্য উত্তর হ'ল আমার ব্যবহারের দরকার ছিল।
thonnor

উত্তর:



41

এর সাথে একটি খুব সাধারণ বাস্তবায়ন String.split():

String path = "/abc/def/ghfj.doc";
// Split path into segments
String segments[] = path.split("/");
// Grab the last segment
String document = segments[segments.length - 1];

1
এই কোডটি বিভাজকটি খুঁজে পাওয়া না গেলে বাউন্ডের ত্রুটির একটি অ্যারে সূচক ছুঁড়ে ফেলবে।
প্যাট্রিক পার্কার

36

তুমি কি চেষ্টা করেছ? এটা খুবই সাধারণ:

String s = "/abc/def/ghfj.doc";
s.substring(s.lastIndexOf("/") + 1)

23

আরেকটি উপায় ব্যবহার করা এই

String path = "/abc/def/ghfj.doc"
String fileName = StringUtils.substringAfterLast(path, "/");

আপনি যদি এই পদ্ধতিতে নাল পাস করেন তবে এটি বাতিল হয়ে যাবে। বিভাজকের সাথে কোনও মিল না থাকলে এটি খালি স্ট্রিংটি ফিরে আসবে।


1
অবশেষে সত্যিই কার্যকর কিছু, এই পদ্ধতি সম্পর্কে জানতেন না। আমি + 1 - 2 +3 স্ট্রাস্টিং + + যাই হোক না কেন ঝামেলা ঘৃণা করি। এটি অনেক বেশি ক্লিনার :)
বেরুস

আপনি Android এর উপর এই পদ্ধতিটি ব্যবহার করতে চান তাহলে, আপনার দ্বারা আমদানি করতে হবে StringUtils: গ্রন্থাগার, এই উত্তর শো গরম এটা করতে stackoverflow.com/a/33935645/2966583
stramin

9

আপনি অ্যাপাচি কমন্স ব্যবহার করতে পারেন:

শেষ ঘটনাটির পরে সাবস্ট্রিংয়ের জন্য এই পদ্ধতিটি ব্যবহার করুন ।

এবং প্রথম উপস্থিতির পরে সাবস্ট্রিংয়ের জন্য সমতুল্য পদ্ধতিটি এখানে


4

এটি ফাইলের নামও পেতে পারে

import java.nio.file.Paths;
import java.nio.file.Path;
Path path = Paths.get("/abc/def/ghfj.doc");
System.out.println(path.getFileName().toString());

ছাপবে ghfj.doc


2

পেয়ারার সাথে এটি করুন:

String id="/abc/def/ghfj.doc";
String valIfSplitIsEmpty="";
return Iterables.getLast(Splitter.on("/").split(id),valIfSplitIsEmpty);

শেষ পর্যন্ত Splitterএবং ব্যবহার কনফিগার করুন

Splitter.on("/")
.trimResults()
.omitEmptyStrings()
...

এছাড়াও মধ্যে কটাক্ষপাত পেয়ারা যে ব্যক্তি বিচ্ছেদ ঘটায় এই নিবন্ধটি এবং পেয়ারা Iterables এই নিবন্ধটি


1

কোটলিনে আপনি substringAfterLastএকটি ডিলিমিটার নির্দিষ্ট করে ব্যবহার করতে পারেন ।

val string = "/abc/def/ghfj.doc"
val result = url.substringAfterLast("/")
println(result)
// It will show ghfj.doc

ডক থেকে :

ডিলিমিটারের শেষ ঘটনার পরে একটি স্ট্রিং ফেরত দেয়। যদি স্ট্রিংটিতে ডিলিমিটার না থাকে তবে অনুপস্থিতডিলিমিটারভ্যালুটি দেয় যা মূল স্ট্রিংয়ের ডিফল্ট হয়।


0

আমি মনে করি যে আমরা যদি সরাসরি বিভক্ত ফাংশনটি ব্যবহার করি তবে এটি আরও ভাল হবে

String toSplit = "/abc/def/ghfj.doc";

String result[] = toSplit.split("/");

String returnValue = result[result.length - 1]; //equals "ghfj.doc"

এই বিভাজকটি পাওয়া না গেলে এই কোডটি একটি ত্রুটি ফেলবে।
প্যাট্রিক পার্কার

@ পেট্রিকপার্কার আপনি কেন সর্বত্র মন্তব্য করেছেন যে বিভাজনকারীকে খুঁজে পাওয়া যায় না তা যদি এটি ত্রুটি ঘটায়। আপনি যদি ঠিকঠাক চেয়ে জ্ঞানের উদ্দেশ্যে এটি করেন তবে আমার মনে হয় এটি সম্ভবত অনেকটা বেশি ...
গৌরব মল

@ গৌরবমল আমি লোকদের তাদের উত্তরগুলি উন্নত করতে, আরও ভাল কোড লিখতে, এবং যারা কোথাও পেস্ট করার আগে কোডটি এটিকে পেস্ট করার আগে তাদের সমস্যাগুলি এড়াতে এবং কোড বোঝার জন্য সহায়তা করতে সহায়তা করছে। উত্তরটি উন্নত হওয়ার পরে আমি আমার মন্তব্যে খুশি হয়ে মুছে ফেলব। এছাড়াও, এটি দুটি জায়গায় লিখলে খুব কমই "সর্বত্র" লেখা হয়। পরিশেষে, মন্তব্য বিভাগটি মেটা আলোচনার জন্য নয়।
প্যাট্রিক পার্কার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.