Tag: string

为什么我不能将常量字符串的串联分配给常量字符串?

有时我想分解一个常量字符串,原因是格式化,通常是SQL。 const string SELECT_SQL = “SELECT Field1, Field2, Field3 FROM TABLE1 WHERE Field4 = ?”; 至 const string SELECT_SQL = “SELECT Field1, Field2, Field3 ” + “FROM TABLE1 ” + “WHERE Field4 = ?”; 但是,C#编译器不允许第二种forms为常量字符串。 为什么?

如何确定字符串变量的值是否在C#中更改?

只有当特定字符串从其先前值更改时,我才能通过按钮单击(将值添加到列表框)来执行操作。 我该如何管理? 以下是我的代码示例: private void button6_Click(object sender, EventArgs e) { string x = //some varying value I get from other parts of my program listBox1.Items.Clear(); listBox1.Items.Add(x + /*other things*/); } 单击button6时,我有时可以从前一个值获得与string x相同的值。 在这种情况下,我不希望listBox1添加项(字符串x)。 如何在字符串值更改时添加到列表框? 没有办法预先确定string x 。 它在程序运行时获得价值。 注意:每次向listBox1添加值,之后删除重复项在我的程序中不起作用。

创建正确路径从左到右连接从右到左部分的问题

我已经在很大程度上简化了问题,这里是示例代码: string outputString = string.Empty; string joinOutputString = string.Empty; string pathOutputString = string.Empty; string[] myStrings = new string[4]; myStrings[0] = “First entry”; myStrings[1] = “اول”; myStrings[2] = “دوم”; myStrings[3] = “Last entry”; StringBuilder sb = new StringBuilder(); for (int i = 0; i < myStrings.Length; i++) { joinOutputString = string.Join(@"\", joinOutputString, myStrings[i]); outputString = string.Format(@"{0}{1}\", […]

来自C ++ COM的C#的字符串

我有一个C ++ DLL,一些函数返回Unicode以null结尾的字符串: void SomeFunc(wchar_t* StrBuf) 调用者必须分配StrBuf – 字符串最多可以包含256个字符。 此DLL还公开COM对象以通过COM从C#使用此DLL。 IDL中的定义: [id(1), helpstring(“bla”)] HRESULT SomeFunc([in,out] BSTR* TextStr, [out,retval] LONG* RetValue); 目前C#代码如下所示: string val = new string(‘\0’, 256); // Allocate memory MyComObj.SomeFunc(ref val); // Get string val = val.Substring(0, val.IndexOf(‘\0’)); // Convert from null-terminated string 有没有办法定义这样的COM函数,以便可以更容易地从C#中使用它? 现在它看起来很丑,如果函数有两个字符串参数,则需要三行来调用函数或五行。

C#取一个字符串的子串

我只是从文件中取一行,如果那个文件没有特定的模式..而且我想从该行获取最后3个字符…我的代码是: while (!line.Contains(pattern)) { String num = line.Substring((line.Length – 3), (line.Length – 2)); System.Console.WriteLine(num); } 但我收到一个错误.. 索引和长度必须指向字符串中的位置。 参数名称:长度 为什么我这样做? 我在行结束前开始新的字符串3个字符,然后我停止2个字符..:\

删除Tab-whitespace?

我在C#中遇到了一个相当奇怪的问题,即删除空格。 我当前的代码如下所示: string s = “This is a string without spaces”; s = s.Replace(” “, string.Empty); 在此示例中,结尾处的最后一个空格,在“不”之后是缩进(Tab),而不是实际的空格键空格。 显然String.Replace不关心它,所以它忽略它,并留下那里的空白。 有可能避免这个问题吗?

查找第一个大写字符的索引

作为一个C#新手,目前要找出一个字符串中第一个大写字符的索引,我已经想出了办法 var pos = spam.IndexOf(spam.ToCharArray().First(s => String.Equals(s, char.ToUpper(s)))); 从function上来说,代码工作正常,只是我有两次遍历字符串的不适,一次找到字符然后找到索引。 是否有可能使用LINQ在一次传递中获取第一个UpperCase字符的索引? C ++中的等价方式就像是 std::string::const_iterator itL=find_if(spam.begin(), spam.end(),isupper); 一个等效的Python语法 next(i for i,e in enumerate(spam) if e.isupper())

ar-sa文化的预期日期时间字符串是多少?

我有一个方法 DateToString(DateTime datetime, string format, CultureInfo cultrueInfo) { return datetime.ToString(format, cultureInfo); } 参数: datetime: {10/1/2016 12:00:00 AM} format: “ddd, dd MMM” cultureInfo: {ar-SA} 但它让我回复了“السبت,30ذوالحجة”。 10月1日是星期六。 为什么它似乎在星期六9月30日回归我? 我身边有什么问题吗?

查找特定格式的出现次数字符串在给定文本中出现

我有一个大字符串,其中可以有不止一次出现的特定单词(文本后跟单个冒号,如“test:”)。 例如,像这样: word: TEST: word: TEST: TEST: // random text “word”出现两次,“TEST”出现三次,但数量可以变化。 此外,这些单词不必具有相同的顺序,并且可以在与该单词相同的行中有更多的文本(如“TEST”的最后一个示例所示)。 我需要做的是将出现次数附加到每个单词,例如输出字符串需要是这样的: word_ONE: TEST_ONE: word_TWO: TEST_TWO: TEST_THREE: // random text 用于获取我写的这些单词的RegEx是^\b[A-Za-z0-9_]{4,}\b: . 但是,我不知道如何快速完成上述工作。 有任何想法吗?

C#将字符串转换为DateTime(AM:PM)

我的应用程序中有一个文本框,用于输入AM PM的时间(小时和分钟)。 在数据库中,该文本框的相关字段是“Times”,它将数据类型保存为DateTime string times = “06:45 AM”; 到Sql-Server的DateTime( YYYY-MM-DD HH:mm:ss ) 如何将输入表单文本框转换为数据库?