我有一个字符串:
Dim str = "version=""1.0"" & VbCrLf & TIME=10:12:23"
如果我运行MsgBox(str)
,则返回
version =“1.0”& VbCrLf&时间= 10:12:23
我希望它是:
版本= “1.0”
时间= 10:12:23
怎么做(返回两行)?
答案 0 :(得分:8)
您似乎错过了关闭"在版本定义之后,Vb包含您键入字符串的所有文本。事实是,为了在字符串中插入引号,你需要写两次:""。并在字符串结尾#34;成为""",这是"" - 单引号和"关闭字符串的符号。
因此,也许
Dim str = "version=""1.0""" & VbCrLf & "TIME=10:12:23"
会有帮助吗?
更新:从linqpad测试:
Dim str = "version=""1.0""" & Microsoft.VisualBasic.Constants.VbCrLf & "TIME=10:12:23"
Microsoft.VisualBasic.MsgBox(str)
结果是:
更新2 。在评论中进行一些讨论之后,似乎问题是如何在Vb.Net / C#"中动态评估一段代码。所以问题更广泛,它是关于使用编译器作为服务。
为了正确评估表达式,最先进的方法(AFAIK)是使用Roslyn。正如我在这里写的那样(Evaluating a mathematical expression),可以做类似的事情(它是C#但可以很容易地翻译成Vb.Net):
using Roslyn.Scripting.CSharp;
namespace RoslynScriptingDemo {
class Program {
static void Main(string[] args) {
var engine = new ScriptEngine();
engine.Execute(@"System.Console.WriteLine((450*5)+((3.14*7)/50)*100);");
}
}
}
答案 1 :(得分:1)
创建此类字符串的简便方法是使用String.Format
Dim msg As String =
String.Format("version="{0}{1}{0} {2} Time = {3}",
Chr(34), varVersion, Environment.NewLine, varTime)
即使您使用文字("1.0"
)而不是变量(varVersion
),代码也更具可读性。
version = "1.0"
Time = 07:24
使用引号会使一切变得更复杂,所以不要这样做。我通常使用[方括号]代替它们:
Dim msg As String =
String.Format("version="[{0}] {2} Time = [{3}]",
varVersion, Environment.NewLine, varTime)
version = [1.0]
Time = [07:24]
答案 2 :(得分:0)
如需报价,则需要“”“”(四个引号)。 因此:
Dim s As String = "version=" & """" & "1.0" & """" & vbCrLf & "TIME=10:12:23"
MsgBox(s)
OR:
Dim q as Char = """"
Dim s() As String = "version=" & q & "1.0" & q & vbCrLf & "TIME=10:12:23"
MsgBox(s)
原因如下: 一个引号打开或关闭字符串文字。 两个引号表示空字符串。 因此,三个引号是一个空字符串加上一个孤立的字符串分隔符。
答案 3 :(得分:0)
你只是在1.0之后错过双引号:
Dim str = "version=""1.0""" & vbCrLf & "TIME=10:12:23"
答案 4 :(得分:0)
或者使用它来缩短你的代码...
Dim str As String =" version =" &安培; Chr(34)& " 1.0" &安培; Chr(34)& vbCrLf& "时间= 10:12:23"
Chr(34)相当于Double Quote"
答案 5 :(得分:-2)
请参阅String.Replace
。
Dim Text As String = "version=""1.0"" & vbCrLf & TIME=10:12:23"
MsgBox(Text.Replace(" & vbCrLf & ", vbCrLf))