【发布时间】:2014-03-21 21:51:49
【问题描述】:
我正在使用以人类可读格式存储字符串的第 3 方数据库。我需要将这些字符串翻译成网络地址。形式如下:
"X on Y (from Z) in session N"
X = 打印机名称(1 到多个单词)
Y = 服务器名称(1 个字)
Z = 客户名称(1 个字)
N = 整数
“在 Y 上”是可选的
如果“on”是打印机名称的一部分,那么我希望这会失败。
如果字符串包含“on Y”,则结果应为:@"\\ServerName\PrinterName"
否则:@"\\ClientName\PrinterName"
你能提供一些东西来完成这项任务吗?最好避免使用 Regex,因为我发现它们很难维护。但是,如果它是这项工作的最佳工具,那就没问题了。
示例:
"MY PRINTER NAME on MyServer (from MyWorkstation) in session 2"
这应该转换为:\\MyServer\My Printer Name
示例 2:
"MY PRINTER NAME (from MyWorkstation) in session 2"
这应该转换为:\\MyWorkstation\My Printer Name
【问题讨论】:
-
你在哪里纠结这个?
-
我不认为你的问题很清楚。您能否提供完整的示例字符串和预期结果?也许你到目前为止的代码?
-
“会话 1 中我的桌面上的打印机(来自 X)” - 您如何判断这是名为“我的桌面上的打印机”的打印机还是名为“PRINTER”的打印机和名为“我的办公桌”?
-
@mbeckish 我怀疑这是可能的。我无法更改系统存储字符串的方式(它的第 3 方)。
-
您在哪里坚持使用非正则表达式解决方案?您必须至少能够提出@Belogix 建议的解决方案,对吧?你走了多远,你被困在哪里了?