我在这里处理一个问题,我有一个像这样的图像的网址
$('.form-control[name=team1]').on('change', function(e){
var thisVal = $(this).val();
$('.form-control[name=team2] option').each(function(){
if(thisVal == $(this).attr('value')){
$(this).attr('disabled', 'disabled');
}else{
$(this).removeAttr('disabled');
}
})
})
这是一个字符串。
我想在http://example.com/image/test.jpg
之前插入.jpg
有没有办法分析URL字符串并以某种方式添加此文本,因此最终字符串应为
-40x40
我到目前为止所尝试的是
http://example.com/image/text-40x40.jpg
但我得到2个错误。
1)我不能添加超过1个字符和2)我不能做数学广告endIndex。
但我不能在那里添加多个角色。
非常感谢!
答案 0 :(得分:4)
试试这个。它使用NSURL
,它存在,以便路径操作简单合法! documentation非常好。
let s1 = "http://example.com/image/test.jpg"
let u = URL(fileURLWithPath: s1)
let exExt = u.deletingPathExtension()
let s2 = exExt.absoluteString + "-40x40.jpg"
答案 1 :(得分:3)
另一种方式。
问题中显示的代码已修复:
var finalImage = "http://example.com/image/test.jpg"
let extIndex = finalImage.index(finalImage.endIndex, offsetBy: -4)
finalImage.insert(contentsOf: "-40x40".characters, at: extIndex)
使用NSRegularExpression
:
let origImage = "http://example.com/image/test.jpg"
let regex = try! NSRegularExpression(pattern: "(\\.jpg)$", options: .caseInsensitive)
let finalImage = regex.stringByReplacingMatches(in: origImage, range: NSRange(0..<origImage.utf16.count), withTemplate: "-40x40$0")
答案 2 :(得分:2)
Grimxn的解决方案可能最适合此问题,但对于更复杂的URL操作,请查看NSURLComponents
类。您可以将NSURL转换为NSURLComponents
,然后使用NSURLComponents
的各种方法操纵您的网址,最后将NSURLComponents
转换回NSURL
如@dfri的评论中所述,Swift 3(及更高版本)包含一个本地URLComponents
类,它遵循Swift命名和调用约定。展望未来你应该使用它而不是Objective-C / Swift 2 NSURLComponents
类。
答案 3 :(得分:2)
作为整齐accepted answer by @Grimxn的补充:Foundation's URL
有更多方法可以让你更多地分离“关注点”,以防你想要对图像进行更复杂的修改(文件) )名称,而不是真正担心图像(文件)名称扩展名。
let s1 = "http://example.com/something.cgi/image/test.jpg"
let u = URL(fileURLWithPath: s1)
// separate into (String) components of interest
let prefixUrl = u.deletingLastPathComponent().absoluteString
// "http://example.com/something.cgi/image/"
let fileName = u.deletingPathExtension().lastPathComponent
// "test"
let fileExtension = "." + u.pathExtension
// ".jpg"
// ... some methods that implements your possibly more
// complex filename modification
func modify(fileName fName: String) -> String {
// ...
return fName + "-40x40"
}
// reconstruct url with modified filename
let s2 = prefixUrl + modify(fileName: fileName) + fileExtension
print(s2) // http:/example.com/something.cgi/image/test-40x40.jpg
答案 4 :(得分:1)
if let url = NSURL(string: "http://example.com/image/test.jpg"),withoutExt = url.URLByDeletingPathExtension
{
let finalstring : NSString = withoutExt.absoluteString + "-40x40.jpg"
print(finalstring)
}
答案 5 :(得分:1)
非常简单的一行...
$ cat tst.awk
BEGIN { FS=OFS="," }
function cvt(dt) { return gensub(/(....)(..)(..)/,"\\2/\\3/\\1",1,dt) }
{ $4=cvt($4); $5=cvt($5); print }
$ awk -f tst.awk file
1231,aaa,bbb,10/01/2016,10/02/2016,hi-ax
1231,aaa,ccc,10/02/2016,10/03/2016,hi-ay
1231,aaa,ddd,10/01/2016,10/07/2016,hi-az