Convert quoted strings in a CSV to an NSMutableArray without the quotes - objective-c

I have a question about the objective C. I have the following NSString *name shown below:
"First Name","Second Name","Last Name";
Actually, name is the header of the CSV and receive from the URL. And I use the follow statement to break the statement to array.
NSMutableArray *csvTitleArray;
csvTitleArray = [[name componentsSeparatedByString:#","];
The result of the array is
[0] = "First Name" // the " is part of the string, it means the first char of [0] is ", not F
[1] = "Second Name"
[2] = "Last Name"
However, I want to cancel the " in the begin and end of the string (the " is part of the string. Can anyone help me? Thank you.

Have a look at parsing csv data, the General CSV section (code example) handles your case.
See writing parser using nsscanner - csv for usefull more generic pointers about parsing data.

Have you thought of using stringByReplacingOccurrencesOfString:withString: and then splitting the string out into an array?

Related

Adding back slash for quotes in Swift

I have the following code in Objective-C:
NSString *someString = #"Hello World";
I need a Swift Code with the following output: \"Hello World\"
Including the double checkmarks and the backslash.
According to your comment, you'll need this:
var mySuperFancyDynamicString: String = "whaaaazzuppp"
let someString: String = "\\\"\(mySuperFancyDynamicString)\\\""
print(someString)
print is \"whaaaazzuppp\" (well... was Hello World, before the edit)
Or to your "text box" Comment:
var mySuperFancyDynamicString: String = textBox.text
let someString: String = "\\\"\(mySuperFancyDynamicString)\\\""
print(someString)
Print will be : \"textBoxContent\"
Apparently you want to convert from Objective-c to swift, if yes then don't add backslash to your double quotes, String in swift are just double quoted text.
You should end with
someString = "Hello World"
If You don't want to convert to swift then what are you doing ? Cause the code you are providing (NSString *someString = #\"Hello World\";) will throw an error.
EDIT :
If you really need that specific output, you must create a string like that :
someString = "\\\"Hello World\\\""

creating text from NSWindowsCP1252StringEncoding text

I have text below,
{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf510
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\
\f0\fs24 \cf0 \'83}
In the above text \'83 corresponds to RTF file format and is in NSWindowsCP1252StringEncoding. Now my problem is how to convert to actual representation in
83 corresponds to string ƒ in NSWindowsCP1252StringEncoding.
NSString string with the encoding say using the api
stringWithCString:encoding. I have called the api like below.
NSString* str = [NSString stringWithCString:#"\'83" encoding:NSWindowsCP1252StringEncoding];
but it does not give the text. please let me know how to convert the value to particular text.
Regards,
Lenin
#"\'83" is not a c string, so you shouldn't be passing it to stringWithCString:encoding:. Even a C string version, "\'83", is just ascii characters so using the encoding NSWdindowsCP1252StringEncoding will not produce a string with any special characters.
Instead you need a c string with non-ascii values in order for NSWindowsCP1252StringEncoding to result in a non-ascii character like 'ƒ'.
NSString *str = [NSString stringWithCString:"\x83" encoding:NSWindowsCP1252StringEncoding];

Regex expression not working in objective c

//string
NSString *haystack = #".test {test:test} .test2{dasf:asdF}";
//pattern
NSString *needle = #"[^{}]*{[^{}]*}";
What I want from this is .test {test:test} and .test2{dasf:asdF} in an array (rest of the code handles this) but for some reason this regexp is not working correctly because no results are found.
If
NSString *needle = #"[^{}]*";
I get the following
(
".test ",
"",
"test:test",
"",
" .test2",
"",
"dasf:asdF",
"",
""
)
which is expected. After a lot of fiddling it seems to be a problem with { and } in the regex but I can't think why.
Incidently, if anyone can explain why I get these empty elements in the array above that would be useful to know as well.
Thanks!
Did you try [^{}]+ (with plus) instead of [^{}]*? Just because * matches also zero chars
Would you try using:
NSString *needle = #"[^{}]*\{[^{}]*\}";
indeed, { and } have special meaning in regexs (but they are sort of "automatically" escaped when used within [])

How do I send multiple querystring parameters in ios?

Here is my code
Passing parameters to my Querystring gives me Bad Access Error!
NSString *myJson = #"http://mySite.com/Service.svc/MyList";
myJson = [myJson stringByAppendingFormat:#"?id=%#&uid=%#", firstId, secondId];
Can someone help me out!
What you do here is simple string formatting.
Given what you are doing, I guess firstId & secondId are integers, not objects, so your error is because you don't use the right format.
The format %# in you stringByAppendingFormat is for displaying an object, or more precisely the string returned by its description selector.
If you want to format an integer, just use %d as in C :)
This will give you :
NSString *myJson = #"http://mySite.com/Service.svc/MyList";
myJson = [myJson stringByAppendingFormat:#"?id=%d&uid=%d", firstId, secondId];

trying to add a reassignment to append the special newline character to a string in Obj C

I'm new to C and need to solve what I'm sure is a very simple problem. How do I add a reassignment to append for a newline in Objective C. The hint given was append #"\n". I want my output to appear on a new line. My code is below:
- (IBAction)displaySomeText: (id)sender
{
WonderfulNumber *myWonderfulNumber = [WonderfulNumber wonderfulNumberWithFloat:pi];
NSString *stringToOutput = #"The value is: ";
stringToOutput = [stringToOutput stringByAppendingString:[myWonderfulNumber storedNumberAsString]];
[textView insertText:stringToOutput];
}
Please help
stringToOutput = [stringToOutput stringByAppendingFormat: #"\n%#",[myWonderfulNumber storedNumberAsString]];