Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Changing System.Path.GetFileName(string path)

Posted on 2010-11-26
6
Medium Priority
?
517 Views
Last Modified: 2013-12-17
In my winform app I use the System.Path.GetFileName(string path).
I would like that if the string is a web address  (like : "http://www.123.com/1.htm") it will return the string without any change.
How can I do this ?
0
Comment
Question by:yaron89
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 5

Assisted Solution

by:buraksarica
buraksarica earned 500 total points
ID: 34215944
You can check against this situation like :

result = mypath;
if (false==mypath.StartsWith("http://"))
{
     result = System.Path.GetFileName(mypath);
}

Open in new window

0
 
LVL 21

Assisted Solution

by:Alpesh Patel
Alpesh Patel earned 500 total points
ID: 34216420
Hi,

You can get page name from Server Variables of Request object.
0
 

Accepted Solution

by:
yaron89 earned 0 total points
ID: 34216422
Thanks. My ask is about changing the System.Path.GetFileName(string path) so I won't have to check against  any situation in the code.
0
Learn Veeam advantages over legacy backup

Every day, more and more legacy backup customers switch to Veeam. Technologies designed for the client-server era cannot restore any IT service running in the hybrid cloud within seconds. Learn top Veeam advantages over legacy backup and get Veeam for the price of your renewal

 
LVL 13

Assisted Solution

by:Naman Goel
Naman Goel earned 500 total points
ID: 34216897
No, Path.GetFileName() is not doing anything special other than simple string extraction

Please look at below attached code for complete internal implementation of Path.GetFileName(path) method

you can instead use any other method for your purpose as suggested by buraksarica,PatelAlpesh or you can create your own URL validation method
 like below and use this method to check for URL and return the same URL for this method returns true otherwise extract filename by Path.GetFileName() method.


/// <summary>
/// method for validating a url with regular expressions
/// </summary>
/// <param name="url">url we're validating</param>
/// <returns>true if valid, otherwise false</returns>
public static bool isValidUrl(ref string url)
{
    string pattern = @"^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&amp;%\$#\=~])*[^\.\,\)\(\s]$";
    Regex reg = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
    return reg.IsMatch(url);
}
public static string GetFileName(string path)
{
    if (path != null)
    {
        CheckInvalidPathChars(path);
        int length = path.Length;
        int num2 = length;
        while (--num2 >= 0)
        {
            char ch = path[num2];
            if (((ch == DirectorySeparatorChar) || (ch == AltDirectorySeparatorChar)) || (ch == VolumeSeparatorChar))
            {
                return path.Substring(num2 + 1, (length - num2) - 1);
            }
        }
    }
    return path;
}

Open in new window

0
 
LVL 20

Assisted Solution

by:BuggyCoder
BuggyCoder earned 500 total points
ID: 34216902
if you write Path.GetFileName(@"http:\\www.123k.com\123.htm"); it will return 123.htm however if you append '\' at the end it will return nothing. so you can check if nothing is returned you can take the passed variable as output in the following way:-

string path = @"http:\\www.kochar.com\123.htm";
string result = (Path.GetFileName(path + @"\").Length == 0 ? path : Path.GetFileName(path));

Console.WriteLine("Path is: " + result);
0
 

Author Closing Comment

by:yaron89
ID: 34399048
.
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
In a question here at Experts Exchange (https://www.experts-exchange.com/questions/29062564/Adobe-acrobat-reader-DC.html), a member asked how to create a signature in Adobe Acrobat Reader DC (the free Reader product, not the paid, full Acrobat produ…
This lesson discusses how to use a Mainform + Subforms in Microsoft Access to find and enter data for payments on orders. The sample data comes from a custom shop that builds and sells movable storage structures that are delivered to your property. …

618 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question