我建议你使用Regex
. 对于有问题的给定 url,正则表达式模式可能是这样的:
var pattern =
"^smb:\/\/((?<user>[\w-]+):(?<pwd>[\w-]+)@)?(?<host>[a-z0-9\.-]+)(?<path>.+)$";
您可以将 url 与模式匹配并按名称提取部分。例如
var regex = new Regex(pattern);
var match = regex.Match(url);
if(match.Success) {
// the url is smb
var username = match.Groups["user"].Value;
var password = match.Groups["pwd"].Value;
var hostname = match.Groups["host"].Value;
var path = match.Groups["path"].Value;
}
对于有问题的给定 url,我们将有以下变量:
// smb://hostname/public/example.txt
username: string.Empty
password: string.Empty
hostname: hostname
path: /public/example.txt
// smb://username:password@hostname/public/example.txt
username: username
password: password
hostname: hostname
path: /public/example.txt
// smb://10.0.0.1/public
username: string.Empty
password: string.Empty
hostname: 10.0.0.1
path: /public
给定的模式是一个简单的演示模式。所以,如果你想走这条路,你应该创建复杂、完整和正确的模式来让代码正常工作。如果您有任何疑问或问题,请告诉我。