是否可以更改NSString特定部分内的文本?例如,我想使用stringByReplacingOccurrencesOfString
,但仅限于字符串的某个部分。在此示例中,我只想在#
之后和#q=
之前替换&lang=en-us
。像这样:
初始字符串:https://google.com/search#q=hello#&lang=en-us
应该替换为:https://google.com/search#q=hello%23&lang=en-us
如果我告诉stringByReplacingOccurrencesOfString
用#
取代%23
,那么使用https://google.com/search%23q=hello%23&lang=en-us
会返回什么:import lucee.runtime.type;
public class MyClass {
public lucee.runtime.type.Struct test () {
// I was hoping to do this, but I get an error
lucee.runtime.type.Struct myStruct = new lucee.runtime.type.Struct();
myStruct.put("passed", true);
return(myStruct);
} // test()
}
感谢您的帮助!
答案 0 :(得分:3)
您问题的直接答案是肯定的,您可以使用stringByReplacingOccurrencesOfString:withString:options:range:
; range
参数指定应在其中进行替换的字符串部分。
NSString
提供了其他搜索方法,可帮助您确定range
的合适值。
上面说过你的方法可能很脆弱"脆弱" - 随着输入数据的变化,容易发生断裂 - 也许你应该把字符串视为它是什么,一个URL,并且首先用适当的转义来构造它;或者将其解析为其部分,添加转义,然后重新组合。 NSURL
和NSString
上的方法可以帮助您实现这一目标。
HTH
答案 1 :(得分:0)
好像你想对现有字符串进行URL编码
NSString *input = @"https://google.com/search#q=hello%23&lang=en-us";
NSURL *url = @"https://google.com/search#q=hello%23&lang=en-us";
NSString *params = [url parameterString];
NSString *enc = [params stringByAddingPercentEscapesUsingEncoding:
NSUTF8StringEncoding];
//append URLs host+path with enc
在上面的代码中没有进行错误检查,只提供了想法