我正在尝试做一些足够普通的事情:在shell脚本中parsing用户input。 如果用户提供了一个有效的整数,那么脚本会做一件事情,如果无效的话,它会做其他事情。 麻烦的是,我还没有find一个简单的(合理的,优雅的)做这个方法 – 我不想一个一个的字符。 我知道这一定很容易,但我不知道如何。 我可以用十几种语言做,但不是BASH! 在我的研究中,我发现这一点: 正则expression式来testing一个string是否包含以10为底的有效实数 在那里有一个关于正则expression式的答案,但据我所知,这是C语言中的一个函数(等等)。 尽pipe如此,它看起来像一个很好的答案,所以我尝试了与grep,但grep不知道该怎么办。 我尝试了-P,在我的盒子上意味着把它当作PERL regexp – nada。 短跑E(-E)也没有工作。 而且-F。 只是要清楚,我正在尝试这样的事情,寻找任何输出 – 从那里,我将破解剧本利用我得到的任何东西。 (IOW,我期待一个不合格的input不会在有效的行重复时返回。) snafu=$(echo "$2" | grep -E "/^[-+]?(?:\.[0-9]+|(?:0|[1-9][0-9]*)(?:\.[0-9]*)?)$/") if [ -z "$snafu" ] ; then echo "Not an integer – nothing back from the grep" else echo "Integer." fi 有人请说明这是如何做到最简单吗? 坦率地说,在我看来,这是TEST的一个短暂的过程。 它应该有这样的旗帜 if [ -I "string" […]
我正在试图创build一个很好的列表在Python中用于我创build的命令行pipe理工具。 基本上,我想要一个像这样的列表: [['a', 'b', 'c'], ['aaaaaaaaaa', 'b', 'c'], ['a', 'bbbbbbbbbb', 'c']] 变成: abc aaaaaaaaaa bc a bbbbbbbbbb c 使用普通的选项卡不会在这里做的伎俩,因为我不知道每行中最长的数据。 这与Linux中'column -t'的行为是一样的 $ echo -e "abc\naaaaaaaaaa bc\na bbbbbbbbbb c" abc aaaaaaaaaa bc a bbbbbbbbbb c $ echo -e "abc\naaaaaaaaaa bc\na bbbbbbbbbb c" | column -t abc aaaaaaaaaa bc a bbbbbbbbbb c 我已经四处寻找各种python库来做到这一点,但找不到任何有用的东西。
在PHP中,HEREDOCstring声明对于输出html块是非常有用的。 你可以通过在$前加上variables来parsingvariables,但是对于更复杂的语法(比如$ var [2] [3]),你必须把你的expression式放在{}括号中。 在PHP 5中,实际上可以在HEREDOCstring中的{}大括号内进行函数调用,但是必须经过一些工作。 函数名称本身必须存储在一个variables中,您必须像调用一个dynamic命名的函数那样调用它。 例如: $fn = 'testfunction'; function testfunction() { return 'ok'; } $string = <<< heredoc plain text and now a function: {$fn()} heredoc; 正如你所看到的,这比以下更混乱: $string = <<< heredoc plain text and now a function: {testfunction()} heredoc; 除了第一个代码示例之外,还有其他一些方法,比如抛出HEREDOC来调用函数,或者颠倒这个问题并执行如下操作: ?> <!– directly output html and only breaking into php for […]
我想用C程序读取用户的input。 我不想使用数组, char names[50]; 因为如果用户给出长度为10的string,则剩余空间被浪费。 如果我使用字符指针, char *names; 那么我需要为此分配内存, names = (char *)malloc(20 * sizeof(char)); 在这种情况下,也有内存浪费的可能性。 所以,我需要的是dynamic分配一个与string长度完全相同的string的内存。 让我们假设, 如果用户input是"stackoverflow" ,那么分配的内存应该是14 (即string的长度= 13,'\ 0'有1个额外的空间)。 我怎么能做到这一点?
这个答案给出了一个很好的关于短string优化(SSO)的高级概述。 不过,我想更详细地了解它在实际中的工作原理,特别是在libc ++实现中: 为了符合SSO条件,string必须有多短? 这是否取决于目标架构? 在访问string数据时,实现如何区分短string和长string? 它是像m_size <= 16一样简单,还是一个标志是其他成员variables的一部分? (我想, m_size或者它的一部分也可能被用来存储string数据)。 我特意为libc ++提出了这个问题,因为我知道它使用SSO,甚至在libc ++主页上也提到了这一点。 以下是观察源代码后的一些观察结果: 对于string类,可以使用两种稍微不同的内存布局来编译libc ++,这是由_LIBCPP_ALTERNATE_STRING_LAYOUT标志控制的。 这两种布局还区分小端和大端机器,总共有4种不同的变体。 我将采取“正常”的布局和小尾数。 进一步假设size_type是4字节,而value_type是1字节,这就是string的前4个字节在内存中的样子: // short string: (s)ize and 3 bytes of char (d)ata sssssss0;dddddddd;dddddddd;dddddddd ^- is_long = 0 // long string: (c)apacity ccccccc1;cccccccc;cccccccc;cccccccc ^- is_long = 1 由于短string的大小在高7位,因此在访问时需要移位: size_type __get_short_size() const { return __r_.first().__s.__size_ >> 1; } 同样,长string容量的getter和setter使用__long_mask来解决is_long位。 […]
你如何获得一个string在JavaScript中的字符数组? 我在想像一个像"Hello world!"的string 到数组['H','e','l','l','o',' ','w','o','r','l','d','!']
自升级到最新的Xcode 3.2.1和Snow Leopard以来,我一直在收到警告 “格式不是string文字和格式参数” 从下面的代码: NSError *error = nil; if (![self.managedObjectContext save:&error]) { NSLog([NSString stringWithFormat:@"%@ %@, %@", errorMsgFormat, error, [error userInfo]]); } 如果errorMsgFormat是带格式说明符的NSString (例如: "print me like this: %@" ),上面的NSLog调用有什么问题? 什么是build议的方式来解决它,使警告不会产生?
例如,我有一个用户input一个电话号码。 cout << "Enter phone number: "; INPUT: (555) 555-5555 cin >> phone; 我想从string中删除“(”,“)”和“ – ”字符。 我已经看了string删除,查找和replacefunction,但我只看到他们的立场的基础上运作。 是否有一个string函数,我可以用来传递一个字符,“(”例如,并删除一个string中的所有实例?
我正在尝试在Java中做一个简单的stringSHA1转换器,这是我得到的… public static String toSHA1(byte[] convertme) { MessageDigest md = null; try { md = MessageDigest.getInstance("SHA-1"); } catch(NoSuchAlgorithmException e) { e.printStackTrace(); } return new String(md.digest(convertme)); } 当我把它传递给toSHA1("password".getBytes()) ,我得到“[ a ɹ?? %l 3〜 。 我知道这可能是一个像UTF-8简单的编码修复,但有人可以告诉我该怎么做才能得到我想要的“5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8”? 还是我这样做完全错了? 非常感谢!
由于Python的string不能改变,我想知道如何更有效地连接string? 我可以这样写: s += stringfromelsewhere 或者像这样: s = [] s.append(somestring) later s = ''.join(s) 在写这个问题的时候,我发现了一篇关于这个话题的好文章。 http://www.skymind.com/~ocrow/python_string/ 但它是Python 2.x.所以这个问题会在Python 3中做一些改变吗?