This question already has answers here:
Parsing CSV files in C#, with header
(19 answers)
Closed 7 years ago.
i have a semicolon separates string, that contains values of every type. string and date values are in quotations.
Now i have an evil string, where an inner string contains s semicolon, that i need to remove (replace by nothing).
eg:
"Value1";0;"Value2";4711;"Evil; Value";"2015-09-03"
in C#:
string value = "\"Value1\";0;\"Value2\";4711;\"Evil; Value\";\"2015-09-03\""
So how to replace all semicolons, that are in quotations? can anybody help?
Regex is awful at handling delimited strings. It can do it, but it's not often as good of a choice as it first appears. This is one of several reasons why.
Instead, you should use a dedicated delimited string parser. There are (at least) three built into the .Net framework. The TextFieldParser type is one of those, and it will handle this correctly.
You should try this i.e to match only those semicolons which is not preceded by : :
(?<=[^"]);
Here is demo
Related
This question already has answers here:
Replace "\\" with "\" in a string in C#
(9 answers)
Escape Characters Aren't Working In Debugger (C#)
(2 answers)
How can I add \ symbol to the end of string in C#
(8 answers)
Why does .NET add an additional slash to the already existent slashes in a path?
(4 answers)
Escape sequence with "\" symbol
(4 answers)
Closed 2 years ago.
I'm struggling with escape characters in C#.
I'm saving a varchar field in a SQL Server database with a quote that needs to be escaped. So, an example could be something like that: (\"value\")
When my frontend application consume this value from API I get the value with a single escape character as i have in the DB.
The problem come up when consuming this API from C# code. For some reason this single character (\) is replaced for three of them (\\\).
After debugging the code I found that when I retrieve the data I get this:
debugging the value
When I click to check the value it seems OK:
Value into Text Visualizer
My question is why theese two extra backslashes are added and how can I get rid of them in order to get only one => (\").
Hope anyone can help me :)
Thanks!
You value should be correct. The debugger window escape the “/“, therefore it appears like escape(backslash)escape(quote).
(//)(/“)
This question already has answers here:
How can I add double quotes to a string that is inside a variable?
(20 answers)
Escape double quotes in a string
(9 answers)
String.Format store double quotes inside string [duplicate]
(4 answers)
Closed 2 years ago.
I need to pass the folder path to the Python interface but spaces in the path make it complicated.
Example :
Defect.py C:\TestImage\Images works fine.
However, if there is a space in the path as below,
`Defect.py C:\**Test Image**\Images`
causes an error due to two separate parameters.
If I could pass it as :
Defect.py "C:\**Test Image**\Images" should work
So I am currently trying to use string.Format("{0}") to format this string with double quotations but does not work.
Please let me know how I could format the statement using string.Format. I need to use string.Format since there are multiple other parameters.
Try this:
string.Format("Defect.py \"C:\\{0}\\Images\"", "Test Image");
Bear in mind that the whole trick is to escape the character using the \" backslash escape character. The rest of it was just to show how to use the string.Format
This question already has answers here:
RegEx match open tags except XHTML self-contained tags
(35 answers)
Closed 3 years ago.
I have a string where i want to replace some chars by empty chars inside a string.
For eg my string is :
"<anyKey>2018-10-08T00.00000-07:00</anyKey>"
The regex i use is :
return System.Text.RegularExpressions.Regex.Replace(sb.ToString(), "<{1}[0-9a-zA-Z]*Key>{1}[0-9]{4}-[0-9]{2}-[0-9]{2}(?<timeandzone>T[0-9]{2}.[0-9]{5}-[0-9]{2}:[0-9]{2})</{1}[0-9a-zA-Z]*Key>{1}", "");
So the output i get is empty. It means that my regex is correct and it is replacing it with empty string, but i just want output like :
"<anyKey>2018-10-08</anyKey>"
I just want to find something that starts with "T" inside the tag where "Key" word is there and replace it with "".
Can you tell me what should i change here ?
Update :
I have an XML which is 1000 lines, but it is stored in a String, so in some cases i need to replace this thing.
I usually bury RegEx in the bottom of my toolbox, preferring other more purpose-built tools whenever possible.
With that in mind I would use the DateTime class to accomplish this.
anykeyNode.InnerText = DateTime.Parse(anykeyNode.InnerText).ToShortDateString();
This question already has an answer here:
What is the correct way to use JSON.NET to parse stream of JSON objects?
(1 answer)
Closed 4 years ago.
I've got to process files that are full of JSON objects. These have simply been concatenated together with no separator thus making the whole file invalid JSON. What is the best way to split this up again? I need to ensure that I don't end up splitting in encoded strings and it needs to be fairly fast as the file can be quite big.
Example file:
{"property":"Data which may include}{"}{"property":"A second object"}
I've done a lot of parsing like this. There's so much JSON code out there that it's rarely necessary with JSON. But if you really need to pass this code yourself in C#, I see no way to approach this other than by manually parsing it character by character.
Special attention needs to be given to curly braces and colons. And, when parsing tokens you'll need to determine if it's quoted. If it's quoted, then you go until the closing quote (ignore any escaped quotes). If it's not quoted, then you go until you hit a non-symbol character.
You might find this task a little easier using my Text Parsing Helper Class class to handle some of the lower-level string handling of your parser.
This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
How to split a string while preserving line endings?
How do I split a string by strings and include the delimiters using .NET?
I'm splitting text into sentences. mystring.Split('.','!', '?') returns the sentences without the ./!/? on them. I need to have it return a sentence with the split param on the end? How does that go? Thanks
public static string[] GetSentences(string text)
{
return text.Split('.', '!', '?');
}
I can think of one way to do it, by combining two separate arrays, but I think it looks awful so I thought I'd ask you professionals for a "proper" way :D
Edit - never mind close its a duplicate. I found the other threads, sorry
Right, string.Split() isn't the right tool here.
Either simply loop through it (string.IndexOf())
or use a RegEx: ([^\.!?]+[\.!?])*
I'm not 100% sure about the escaping.