Questions tagged «string»

字符串是有限的符号序列,通常用于文本,尽管有时用于任意数据。

8
在C#中将字符串解析为DateTime
我的日期和时间的格式像这样: "2011-03-21 13:26" //year-month-day hour:minute 我如何解析为System.DateTime? 我想使用类似的功能DateTime.Parse()(DateTime.ParseExact()如果可能),以便能够手动指定日期的格式。
165 c#  .net  string  parsing  datetime 

4
删除字符串的第一个字符
我想删除字符串的第一个字符。 例如,我的字符串以a开头,:而我只想删除它。:字符串中有几次不应删除。 我正在用Python编写代码。
165 python  string 

18
什么是最快的子串搜索算法?
好的,所以我听起来不像个白痴,我将更明确地说明问题/要求: 针(模式)和干草堆(要搜索的文本)都是C样式的以null终止的字符串。没有提供长度信息;如果需要,必须对其进行计算。 函数应该返回指向第一个匹配项的指针,或者NULL如果找不到匹配项。 失败案例是不允许的。这意味着具有非恒定(或大常数)存储要求的任何算法都将需要具有备用失败分配的备用情况(备用备用的性能因此会导致最差情况的性能)。 尽管也可以很好地描述不带代码的算法(或指向该算法的链接),但是实现应使用C语言。 ...以及“最快”的意思: 确定性O(n)其中n=干草堆长度。(但是,O(nm)如果将它们与更鲁棒的算法结合使用以给出确定性的O(n)结果,则可以使用通常是正常的算法(例如滚动哈希)中的思想)。 永远不要表现出if (!needle[1])比朴素的蛮力算法更糟的性能(可测量;几个时钟等等都可以),特别是在很短的针上,这可能是最常见的情况。(无条件的大量预处理开销是不好的,因为试图以可能的针头为代价来提高病理性针头的线性系数)。 与任意其他广泛使用的算法相比,给定任意的针头和干草堆,其性能可比或更高(搜索时间长于50%以上)。 除了这些条件,我将保留“最快”开放式的定义。一个好的答案应该可以解释为什么您考虑您建议的“最快”方法。 我的当前实现比glibc的双向实现大约慢10%至快8倍(取决于输入)。 更新:我当前的最佳算法如下: 对于长度为1的针,请使用strchr。 对于长度为2-4的针,请使用机器字一次比较2-4个字节,如下所示:将针以16位或32位整数进行预加载并进行位移位,并在每次迭代时从干草堆中循环出旧字节/新字节。干草堆的每个字节仅被读取一次,并检查0(字符串末尾)和一个16位或32位比较。 对于长度> 4的针,请使用双向算法以及一个错误的移位表(例如Boyer-Moore),该表仅应用于窗口的最后一个字节。为了避免初始化1kb表的开销(这对于许多中等长度的针头来说都是净损失),我保留了一个位数组(32字节)来标记移位表中的哪些条目已初始化。未设置的位对应于从未出现在机针中的字节值,因此可能会发生全针长移位。 我想到的主要问题是: 有没有一种方法可以更好地利用不良转移表?Boyer-Moore通过向后扫描(从右到左)来最好地利用它,但是双向方法需要从左到右扫描。 对于一般情况(没有内存不足或二次性能条件),我发现的仅有的两种可行的候选算法是有序字母表上的双向匹配和字符串匹配。但是是否存在容易检测到的情况,其中不同的算法将是最佳选择?当然,空间算法中的许多O(m)(m针长在哪里)都可以使用m<100。如果对可证明只需要线性时间的针进行简单的测试,也可以使用最坏情况的二次方算法。 奖励积分: 您可以假设针和干草堆都是格式正确的UTF-8来提高性能吗?(具有变化的字节长度的字符,良好的格式会在针和干草堆之间提出一些字符串对齐要求,并在遇到不匹配的头字节时允许自动2-4字节移位。但是这些约束是否可以为您带来很多/其他好处?最大的后缀计算,良好的后缀移位等已经为您提供了各种算法?) 注意:我很清楚那里的大多数算法,只是他们在实践中表现不佳。这是一个很好的参考,所以人们不会一直给我关于算法的参考作为评论/答案:http : //www-igm.univ-mlv.fr/~lecroq/string/index.html
165 c  algorithm  string  substring 

10
?? 合并为空字符串?
我发现自己做的越来越多的事情是检查字符串是否为空(如in ""或null)和条件运算符。 当前示例: s.SiteNumber.IsNullOrEmpty() ? "No Number" : s.SiteNumber; 这只是一个扩展方法,它等效于: string.IsNullOrEmpty(s.SiteNumber) ? "No Number" : s.SiteNumber; 由于它是空的而不是null,??因此不会解决问题。一个string.IsNullOrEmpty()版本的??将是完美的解决方案。我在想必须有一种更清洁的方法(我希望!),但是我一直茫然地找不到它。 有谁知道这样做的更好方法,即使仅在.Net 4.0中也是如此?


10
创建一个长度可变的字符串,用重复的字符填充
因此,我的问题已被其他人以下面的Java形式提出:Java-创建一个具有指定长度并填充有特定字符的新String实例。最佳解决方案? 。。。但我正在寻找其JavaScript等效项。 基本上,我想根据每个字段的“ maxlength”属性以“#”字符动态填充文本字段。因此,如果输入具有has maxlength="3",则该字段将用“ ###”填充。 理想情况下,会有类似Java的东西StringUtils.repeat("#", 10);,但是到目前为止,我能想到的最佳选择是一次遍历并附加“#”字符,直到达到最大长度为止。我不禁感到有比这更有效的方法了。 有任何想法吗? 仅供参考-我不能简单地在输入中设置默认值,因为“#”字符需要清晰显示,并且,如果用户未输入值,则需要在模糊时“重新填充”。这是我关注的“补充”步骤
164 javascript  html  string 

10
如何删除字符串中的所有前导零
如果我有一个字符串 00020300504 00000234892839 000239074 我如何摆脱前导零,以便我只有这个 20300504 234892839 239074 请注意,上面的数字是随机生成的。
163 php  string 


10
C#字符串引用类型?
我知道C#中的“字符串”是引用类型。这是在MSDN上。但是,此代码无法正常运行,因此应: class Test { public static void Main() { string test = "before passing"; Console.WriteLine(test); TestI(test); Console.WriteLine(test); } public static void TestI(string test) { test = "after passing"; } } 由于我将字符串作为参数传递并且是引用类型,因此输出应为“传递前”或“传递后”,第二个输出语句应识别出TestI方法中的文本已更改。但是,我得到“通过之前”“通过之前”,似乎它是通过值而不是通过引用传递的。我知道字符串是不可变的,但是我看不出它怎么解释这里发生的事情。我想念什么?谢谢。
163 c#  string  reference  types 

13
如何在Haskell中分割字符串?
有没有在Haskell中拆分字符串的标准方法? lines并且words可以很好地在空格或换行符上分割,但是肯定有一种在逗号上分割的标准方法吗? 我在Hoogle上找不到。 具体而言,我正在寻找的东西,其中split "," "my,comma,separated,list"的回报["my","comma","separated","list"]。
163 string  haskell 

8
istringstream,ostringstream和stringstream有什么区别?/为什么不在每种情况下都使用stringstream?
当我会用std::istringstream,std::ostringstream以及std::stringstream为什么不应该我只是用std::stringstream在所有情况(是否有任何的运行时性能问题?)。 最后,这有什么不好的地方(而不是根本不使用流): std::string stHehe("Hello "); stHehe += "stackoverflow.com"; stHehe += "!";

22
如何在C#中将字符串格式化为电话号码
我有一个字符串“ 1112224444”,它是一个电话号码。在将其存储到文件中之前,我想将其格式化为111-222-4444。它位于数据记录中,我希望能够在不分配新字符的情况下执行此操作变量。 我刚在想: String.Format("{0:###-###-####}", i["MyPhone"].ToString() ); 但这似乎并不能解决问题。 **更新** 好。我去了这个解决方案 Convert.ToInt64(i["Customer Phone"]).ToString("###-###-#### ####") 现在,当扩展名少于4位时,它就会混乱。它将从右边填写数字。所以 1112224444 333 becomes 11-221-244 3334 有任何想法吗?

8
遍历字符串中所有字符的最快方法
在Java中,迭代字符串中所有字符的最快方法是: String str = "a really, really long string"; for (int i = 0, n = str.length(); i < n; i++) { char c = str.charAt(i); } 或这个: char[] chars = str.toCharArray(); for (int i = 0, n = chars.length; i < n; i++) { char c = chars[i]; } …

12
在Enum中搜索一个字符串并返回Enum
我有一个枚举: public enum MyColours { Red, Green, Blue, Yellow, Fuchsia, Aqua, Orange } 而且我有一个字符串: string colour = "Red"; 我希望能够返回: MyColours.Red 从: public MyColours GetColour(string colour) 到目前为止,我有: public MyColours GetColours(string colour) { string[] colours = Enum.GetNames(typeof(MyColours)); int[] values = Enum.GetValues(typeof(MyColours)); int i; for(int i = 0; i < colours.Length; i++) { …
163 c#  string  enumeration 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.