Solved

Changing System.Path.GetFileName(string path)

Posted on 2010-11-26
6
507 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
6 Comments
 
LVL 5

Assisted Solution

by:buraksarica
buraksarica earned 125 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 125 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
MIM Survival Guide for Service Desk Managers

Major incidents can send mastered service desk processes into disorder. Systems and tools produce the data needed to resolve these incidents, but your challenge is getting that information to the right people fast. Check out the Survival Guide and begin bringing order to chaos.

 
LVL 13

Assisted Solution

by:Naman Goel
Naman Goel earned 125 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 125 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

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

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

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

808 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