Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6387185
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T03:07:11+00:00 2026-05-25T03:07:11+00:00

I need to get a value from a file path. assume my path looks

  • 0

I need to get a value from a file path.
assume my path looks like any other path:

c:\SomeFolder\SomeOtherfolder\A_Specific_Folder\what_i_want\another_folder\bla.txt

I can infer the name of ‘A_Specific_Folder’ at runtime, and i need to get ‘what_i_want’.
I know that ‘what_i_want’ is a number

I currenly use a regex like this:

public String getValueThatIneed(String path) {
    String regex = String.format("%s\\\\([0-9]+)\\\\", varContainingNameOfSpecificFolder); 
    Pattern p = Pattern.compile(regex);
    Matcher matcher = compile.matcher(path);
    matcher.find(); \\because otherwise i can't use matcher.start()
    String myValue = path.substring(matcher.start(1), matcher.end(1));
    return myValue;
}

All this just to get this tinyValue from one String.
Now assume that i must have this in a method because I use it in 10 places.
But in one of the places I suddenly need to do some other operation on the stirng that would again require me to do all the patter, matcher stuff, with the same regex, just to get matcher.end(1), because maybe thats all i need over there.

Is there shorter way to do this?

thanks.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T03:07:12+00:00Added an answer on May 25, 2026 at 3:07 am

    I see several minor problems in your code:

    • If varContainingNameOfSpecificFolder contains characters that have a meaning in regular expressions (. being the most likely candidate), then you must use Pattern.quote() to quote that part.
    • your use of String.format() is unnecessary, you can use simply String concatenation using + here, which is easier to read.
    • you don’t need the assignment to myValue, simply return the result of substring
    • the substring call is unnecessary here! Simply replacing that expression with matcher.group(1) has the same effect!
    • using String.replaceAll() might be a valid shortcut, but you’d have to modify your regex slightly.

    So my version would be:

    public static String getValueThatIneed(String path) {
        String regex = ".*\\\\" + Pattern.quote(varContainingNameOfSpecificFolder) + "\\\\([0-9]+)\\\\.*";
        String result = path.replaceAll(regex, "$1");
        if (result.equals(path)) {
            throw new IllegalArgumentException("<" + path + "> does not contain the thin i need!");
        }
        return result;
    }
    

    If you don’t care about error checking (as your code doesn’t do it either) you can simply return the result of the replaceAll() method and have a two-line method:

    public static String getValueThatIneed(String path) {
        String regex = ".*\\\\" + Pattern.quote(varContainingNameOfSpecificFolder) + "\\\\([0-9]+)\\\\.*";
        return path.replaceAll(regex, "$1");
    }
    

    However, I strongly encourage you to keep it, as otherwise you can easily miss nasty bugs in your code.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I need to get a value from a textbox inside a FooterTemplate in the
I need to get the value from the parent form into the child; not
I need to get a value from another page. But I get this error
I need to get the biggest value from two fields: SELECT MAX(field1), MAX(field2) Now,
I need to get the left hand side integer value from a decimal or
I'm facing a simple problem I would like to get a local path from
I need to get in an action method the values from the selected checkboxes
For example i have this xml. I need to get value of parameter val
I need to get the value of the 'test' attribute in the xsl:when tag,
I need to get the value of the first checkbox which is checked and

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.