我想写一个正则expression式返回一个括号之间的string。 例如:我想获取string之间的string“(”和“)” I expect five hundred dollars ($500). 会返回 $500 find正则expression式来获取Javascript中两个string之间的string 但我是新的正则expression式。 我不知道如何在正则expression式中使用'(',')'
将输出从java.io.OutputStream传递给Java中的String的最好方法是什么? 说我有方法: writeToStream(Object o, OutputStream out) 它将某些数据从对象写入给定的stream。 但是,我想尽可能轻松地将此输出转换为string。 我正在考虑写这样的课(未经testing): class StringOutputStream extends OutputStream { StringBuilder mBuf; public void write(int byte) throws IOException { mBuf.append((char) byte); } public String getString() { return mBuf.toString(); } } 但有没有更好的办法? 我只想运行一个testing!
将Enum中存储的值用作string文字的最佳方法是什么? 例如: public enum Modes { some-really-long-string, mode2, mode3 } 然后,我可以使用Mode.mode1返回它的string表示forms为mode1 。 而不必保持调用Mode.model.toString() 。
就像我喜欢C和C ++一样,我忍不住用零结尾的string来select我的头: 在C之前存在长度前缀(即Pascal)string 通过允许恒定的时间长度查找,长度前缀string使得几个algorithm更快。 带有前缀长度的string使得导致缓冲区溢出错误变得更加困难。 即使在32位机器上,如果允许string为可用内存的大小,则长度前缀string比空string只有三个字节。 在16位机器上,这是一个字节。 在64位机器上,4GB是一个合理的string长度限制,但即使您想将其扩展到机器字的大小,64位机器通常也有充足的内存,使得额外的七个字节sorting为空参数。 我知道最初的C标准是为疯狂的穷人机器(内存)编写的,但效率的论点在这里并不卖我。 几乎所有其他语言(即Perl,Pascal,Python,Java,C#等)都使用长度前缀string。 这些语言通常在string处理基准testing中胜过C,因为它们对string更高效。 C ++用std::basic_string模板纠正了这个问题,但是普通的字符数组需要null结尾的string仍然普遍。 这也是不完善的,因为它需要堆分配。 空终止的string必须保留一个不能存在于string中的字符(即null),而长度前缀string可以包含embedded的空值。 这些事情中有几个比C更早出现,所以C不知道它们是有意义的。 然而,在C成立之前,有好几个都很清楚。 为什么会selectnull终止的string,而不是明显优越的长度前缀? 编辑 :因为有些人在我的效率点上面提出了一些事实 (而且不喜欢那些我已经提供的),他们来自于一些事情: 使用空string的Concat需要O(n + m)时间复杂度。 长度前缀通常只需要O(m)。 使用空字符结束的string的长度需要O(n)时间复杂度。 长度前缀是O(1)。 长度和concat是迄今为止最常见的string操作。 有几种情况,以空字符结束的string可以更有效,但是这种情况发生得less得多。 从下面的答案,这些是一些情况下,空string更有效: 当你需要中断一个string的开始,并且需要将它传递给某种方法。 即使允许销毁原始string,也不能在长度为前缀的情况下实时执行此操作,因为长度前缀可能需要遵循alignment规则。 在某些情况下,你只是逐个字符地循环,你可能会保存一个CPU寄存器。 请注意,这只适用于你没有dynamic分配string的情况(因为那么你必须释放它,因此必须使用你保存的CPU寄存器来保存你最初从malloc和朋友那里得到的指针)。 以上都不是长度和连续的一样普遍。 下面的答案还有一个说法: 你需要切断string的结尾 但是这个是不正确的 – 对于以空字符结尾和长度为前缀的string,这是相同的时间量。 (空终止的string只是在你想要新结束的地方贴上一个null,长度前缀只是从前缀中减去)。
我试图比较两个string。 一个存储在一个文件中,另一个从用户(stdin)中获取。 这是一个示例程序: int main() { char targetName[50]; fgets(targetName,50,stdin); char aName[] = "bob"; printf("%d",strcmp(aName,targetName)); return 0; } 在这个程序中,当input是"bob"时, strcmp返回一个-1的值。 为什么是这样? 我认为他们应该是平等的。 我怎样才能得到它,所以他们是?
我有string: Main.Sub.SubOfSub 而某种数据,可能是一个string: SuperData 我怎么能把它全部转换到这个数组上面? Array ( [Main] => Array ( [Sub] => Array ( [SubOfSub] => SuperData ) ) ) 感谢您的帮助,PK
当我尝试获取一个整数并将“b”前置到它时,我得到这个错误,将它转换成一个string: File "program.py", line 19, in getname name = "b" + num TypeError: Can't convert 'int' object to str implicitly 这与这个function有关: num = random.randint(1,25) name = "b" + num
我正在尝试迭代通过一个string,以删除重复的字符。 例如,stringaabbccdef应该成为abcdef ,stringabcdabcd应该成为abcd 这是我到目前为止: public class test { public static void main(String[] args) { String input = new String("abbc"); String output = new String(); for (int i = 0; i < input.length(); i++) { for (int j = 0; j < output.length(); j++) { if (input.charAt(i) != output.charAt(j)) { output = output + input.charAt(i); } […]
我有一个string,看起来像这样: GenFiltEff=7.092200e-01 使用bash,我只想得到=字符后面的数字。 有没有办法做到这一点?
我需要写一些循环来计算string中每个字母的频率。 例如:“aasjjikkk”会计算2'a',1's',2'j',1'i',3'k'。 最终像这样的id结束在地图中,字符作为关键字,数字作为值。 任何好主意如何做到这一点?