Solved

Trim string C#

Posted on 2011-02-27
18
321 Views
Last Modified: 2012-05-11
Hopefully a simple one. I'm trying to trim the following string, so I end up with the characters as shown:

Original string:
http://server.domain.com/Web/graphics/page.asp

Required string:
/graphics/page.asp
0
Comment
Question by:wint100
[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
  • 8
  • 6
  • 3
  • +1
18 Comments
 
LVL 3

Expert Comment

by:sergiobg57
ID: 34992168
Just like it?


sUrl = "http://server.domain.com/Web/graphics/page.asp";
            MessageBox.Show(sUrl.Substring(28));

Open in new window

0
 
LVL 1

Author Comment

by:wint100
ID: 34992178
It could be anything before the /Graphics....

So, I need to trim anything before /Graphics.... no matter what comes before it.
0
 
LVL 1

Author Comment

by:wint100
ID: 34992183
And also return anything that may come after it. /Graphics is the key, I just need any characters starting with /Graphics/anything/anything/anypage.asp
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 23

Expert Comment

by:Rajkumar Gs
ID: 34992191
Function to reverse string
    public static string Reverse(string s) 
    { 
        char[] charArray = s.ToCharArray(); 
        Array.Reverse(charArray); 
        return new string(charArray); 
    }

Open in new window

Main code
string input = "http://server.domain.com/Web/graphics/page.asp";
input = Reverse(input);
string[] temp = input.Split(Convert.ToChar("/"));
string output = Reverse(temp[0] + "/" + temp[1]);

Open in new window


Raj
0
 
LVL 23

Expert Comment

by:Rajkumar Gs
ID: 34992198
Oh!

I have seen latest comments just now
Raj
0
 
LVL 3

Expert Comment

by:sergiobg57
ID: 34992204
Well, the safest way is this then:


String sUrl, sIndex = "/graphics/";
            sUrl = "http://server.domain.com/Web/graphics/page.asp";

            sUrl = sUrl.Remove(0, sUrl.IndexOf(sIndex));

Open in new window

0
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 34992211
Hi wint100;

Something like this should work.

string testStr = "http://server.domain.com/Web/graphics/page.asp";

testStr = System.Text.RegularExpressions.Regex.Match( testStr, @".*/(.+/.+\.asp)" ).Groups[ 1 ].Value;

MessageBox.Show( testStr );


Fernando
0
 
LVL 3

Expert Comment

by:sergiobg57
ID: 34992214
RajkumarGS, don't worry.
I'm not here for points, i'm just here to practice my english. :)

Anyway, you can use just one string if you like.


String sUrl = "http://server.domain.com/Web/graphics/page.asp";
sUrl = sUrl.Remove(0, sUrl.IndexOf("/graphics"));

Open in new window

0
 
LVL 1

Author Comment

by:wint100
ID: 34992215
Fernando, what would be the output there?
0
 
LVL 3

Accepted Solution

by:
sergiobg57 earned 250 total points
ID: 34992223
My code?
It would be the one you requested.

/graphics/page.asp

Open in new window


See for yourself.
 
String sUrl = "http://server.domain.com/Web/graphics/page.asp";
sUrl = sUrl.Remove(0, sUrl.IndexOf("/graphics"));
MessageBox.Show(sUrl);

Open in new window

0
 
LVL 3

Expert Comment

by:sergiobg57
ID: 34992228
Oh, i didn't read the name fernando nor his comment. =p
Forget the comment above.
0
 
LVL 1

Author Comment

by:wint100
ID: 34992244
sergio, I think you nailed it, that seems very simple and will give anything after and including /Graphics, right?

So If I had :

String sUrl = "http://server.domain.com/Web/graphics/folder/folder/page.asp";
sUrl = sUrl.Remove(0, sUrl.IndexOf("/graphics"));
MessageBox.Show(sUrl); 

Open in new window


I'd output - "graphics/folder/folder/page.asp"

Sorry, I'm not able to test any code at the moment, but if you say it will give the above output, that's good for me.
0
 
LVL 23

Assisted Solution

by:Rajkumar Gs
Rajkumar Gs earned 250 total points
ID: 34992245
string input = "http://server.domain.com/Web/graphics/test/testpage/page.asp";
string output = input.Substring(input.IndexOf("/graphics/"), input.Length - input.IndexOf("/graphics/"));

Open in new window


I have tested it various inputs
http://server.domain.com/Web/graphics/page.asp
http://server.domain.com/Web/graphics/test/page.asp
http://server.domain.com/Web/graphics/test/testpage/page.asp

Hope this helps
Raj
0
 
LVL 3

Expert Comment

by:sergiobg57
ID: 34992256
Yeah, it will cut everything before /graphics/ and let the /graphics/ and whatever is after in the string.
0
 
LVL 1

Author Comment

by:wint100
ID: 34992261
I think I'll have to split points between Segio and Raj, is this OK?
0
 
LVL 3

Expert Comment

by:sergiobg57
ID: 34992273
I've made a very simple test for you to see.

 test
0
 
LVL 1

Author Comment

by:wint100
ID: 34992275
Also, I've seen conflicting Index, do I need IndexOf("/graphics")); or IndexOf("/graphics/")); (with the extra /)?

0
 
LVL 3

Expert Comment

by:sergiobg57
ID: 34992296
It doesn't matter that much in fact.
IndexOf will return the position of the first char of the searched string.

If you use "/graphics" or "/graphics/" will do little difference
But for a matter of fact, it's better to use "/graphics/" as if you have a folder named "/graphics_something/" my code will interpret wrongly as /graphics/" .
0

Featured Post

Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

Question has a verified solution.

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

Article by: Ivo
C# And Nullable Types Since 2.0 C# has Nullable(T) Generic Structure. The idea behind is to allow value type objects to have null values just like reference types have. This concerns scenarios where not all data sources have values (like a databa…
Introduction This article series is supposed to shed some light on the use of IDisposable and objects that inherit from it. In essence, a more apt title for this article would be: using (IDisposable) {}. I’m just not sure how many people would ge…
NetCrunch network monitor is a highly extensive platform for network monitoring and alert generation. In this video you'll see a live demo of NetCrunch with most notable features explained in a walk-through manner. You'll also get to know the philos…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …

728 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