标签: stringbuilder

反向String.Replace - 更快的方式吗?

我有一个方法来替换除我指定的字符之外的每个字符.例如,

ReplaceNot("test. stop; or, not", ".;/\\".ToCharArray(), '*'); 
Run Code Online (Sandbox Code Playgroud)

会回来的

"****.*****;***,****".

现在,这不是过早优化的实例.我在网络操作期间多次调用此方法.我发现在更长的字符串上,它会导致一些延迟,并且删除它会有所帮助.任何有助于加快这一点的帮助将不胜感激.

    public static string ReplaceNot(this string original, char[] pattern, char replacement)
    {           
        int index = 0;
        int old = -1;

        StringBuilder sb = new StringBuilder(original.Length);

        while ((index = original.IndexOfAny(pattern, index)) > -1)
        {
            sb.Append(new string(replacement, index - old - 1));
            sb.Append(original[index]);
            old = index++;
        }

        if (original.Length - old > 1)
        {
            sb.Append(new string(replacement, original.Length - (old + 1)));
        }

        return sb.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

最后的#.我还为一个3K字符串添加了一个测试用例,运行时间为100K而不是1M,以查看每个字符串的大小.唯一令人惊讶的是,正则表达式"比其他表达式更好",但它没有任何帮助,因为它开始时非常缓慢:

User            Short * 1M  Long * 100K …

c# string performance stringbuilder

7
推荐指数
2
解决办法
1243
查看次数

使用P/Invoke时设置StringBuilder.Capacity的正确方法是什么?

应该StringBuilder.Capacity设置为最大.NET字符数,而不考虑空终止,或者在使用P/Invoke时,必须将其设置为更高,以便为空终止符保留空间.

自然的反应是它应该设置得更高,但似乎P/Invoke应该自动补偿.事实上,这实际上是在这里记录的:http://msdn.microsoft.com/en-US/library/s9ts558h(v = VS.100).aspx

这个问题的原因是大多数示例与上述文档并不严格一致.它们几乎总是被编码:

StringBuilder sb = new StringBuilder(dotNetChars + 1);
SomeWindowsAPI(sb, sb.Capacity);
Run Code Online (Sandbox Code Playgroud)

代替:

StringBuilder sb = new StringBuilder(dotNetChars);
SomeWindowsAPI(sb, sb.Capacity + 1);
Run Code Online (Sandbox Code Playgroud)

(我意识到一些API处理缓冲区大小参数的方式不同.假设API处理这是必须的常见方式,如GetFullPathName:http://msdn.microsoft.com/en-us/library/aa364963(v = VS.85) .aspx)

sb.Capacity直接在API调用中使用表达式似乎是避免不匹配的最佳实践.问题是添加+1是否正确.

环视四周.您可能会发现唯一显示的sb.Capacity + 1是MSDN文档.

当然,人们可以在谨慎的情况下使用比绝对必要的更大的缓冲区来分配,但我想知道如何做到这一点的共识.

.net pinvoke stringbuilder

7
推荐指数
2
解决办法
581
查看次数

如果使用String实现String连接是使用StringBuilder实现的,那么为什么在连接期间会创建额外的对象?

如果以下代码:

String s = "a" + 1 + "b";// 1.
Run Code Online (Sandbox Code Playgroud)

使用StringBuilder等效实现

String s = new StringBuilder().append("a").append(1).append("b");
Run Code Online (Sandbox Code Playgroud)

然后将在1中创建额外的对象"a"和"b",为什么?

java string stringbuilder

7
推荐指数
2
解决办法
537
查看次数

SubString StringBuilder c#

我尝试着 :

1  string pal = "Juan     1David     1Correa";
2  StringBuilder sb = new StringBuilder(pal);
3  Console.writeline( sb.ToString(0,9) );
4  Console.writeline( sb.ToString(10,14) );
5  Console.writeline( sb.ToString(15,26) );
Run Code Online (Sandbox Code Playgroud)

但是在4行中它引发了异常.

为什么?

c# stringbuilder exception

7
推荐指数
1
解决办法
1万
查看次数

将空白添加到stringbuilder?

如何将空格附加到字符串生成器?我需要插入90个空格,在VB我有这个代码,但我很困惑如何写c#任何人可以帮助我

Dim S As New StringBuilder("HELLO")
S.Append(" "c, 90)
S.Append("WORLD")
MessageBox.Show(S.ToString) 
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# stringbuilder

7
推荐指数
2
解决办法
1万
查看次数

我应该将StringBuilder或StringBuffer用于webapps吗?

我在Java 1.6中编写了一个webapp并在tomcat中运行它.虽然我没有做任何明确的线程,但我想知道Spring和Tomcat幕后发生了什么.我会使用StringBuilder而不是StringBuffer遇到任何问题吗?

java stringbuilder stringbuffer thread-safety java-6

7
推荐指数
1
解决办法
2270
查看次数

Java删除最后一个字符串

我有不同类型的名字.喜欢

ABC BCD, EFG HGF, HGF HJK
Run Code Online (Sandbox Code Playgroud)

我想,以取代过去,"and".所以,格式将是这样的

ABC BCD, EFG HGF & HGF HJK
Run Code Online (Sandbox Code Playgroud)

我试过这个

names = "Jon Benda, Jon Wetchler, Thomas Leibig "
StringBuilder sbd = new StringBuilder();
String[] n = getNames.split("\\s+");
System.out.println(n.length);
for (int i = 0; i < n.length; i++) {
    sbd.append(n[i]);
    System.out.print(n[i]);
    if (i < n.length - 3)
        sbd.append(" ");
    else if (i < n.length - 2)
        sbd.append(" & ");
}
System.out.print("\n");
System.out.print(sbd);
Run Code Online (Sandbox Code Playgroud)

java stringbuilder

7
推荐指数
2
解决办法
7915
查看次数

StringBuilder在Java中初始化

我需要使用这个方法,在查看源代码之后,我注意到一个StringBuilder不熟悉的初始化(我总是使用no-argument构造函数StringBuilder,ie new StringBuilder()).

在方法中:

StringBuilder sb = new StringBuilder(items.size() << 3);
Run Code Online (Sandbox Code Playgroud)

来自JavaDoc:

java.lang.StringBuilder.StringBuilder(int capacity)

构造一个字符串构建器,其中没有字符和capacity参数指定的初始容量.

为什么这里需要换班?

源代码:

/** Creates a backslash escaped string, joining all the items. */
  public static String join(List<?> items, char separator) {
    StringBuilder sb = new StringBuilder(items.size() << 3);
    boolean first=true;
    for (Object o : items) {
      String item = o.toString();
      if (first) {
        first = false;
      } else {
        sb.append(separator);
      }
      for (int i=0; i<item.length(); i++) {
        char …
Run Code Online (Sandbox Code Playgroud)

java stringbuilder bit-manipulation

7
推荐指数
2
解决办法
4140
查看次数

为什么不能使用String初始化StringBuilder对象?

StringBuilder sb = "asd";
Run Code Online (Sandbox Code Playgroud)

在Java中,这种说法显然是错误的.像eclipse这样的IDE会告诉你:

无法从String转换为StringBuilder

但是,操作员String可以初始化对象=.

我想知道一些与内存分配有关的原因.

java stringbuilder

7
推荐指数
2
解决办法
2074
查看次数

如何通过php/android优化从mysql获取数据?

介绍

我有一个应用程序,并希望强制用户更新它,如果新版本在谷歌游戏市场.使用以下代码可以正常工作,但不是很稳定.我是通过AsyncTask进行的,并从php文件中获取数据.但它让我觉得必须有一种更好的方式或方式使它更稳定.

如何为程序设置超时,例如由于用户的互联网连接非常低?

get_newest_apk.php

<?PHP

    /*  GET APK VERSION FROM ANDROID DEVICE
        Example: [PATH]/get_newest_apk.php?apkversion=6
    */
    if($_GET["apkversion"]){
        $apkversion= $_GET["apkversion"];

        //MYSQL LOGIN PARAMETERS
        $host = '*****';
        $user = '*****';
        $pass = '*****';
        $db =   '*****';

        $mysqli = new mysqli($host, $user, $pass, $db);

            $result = $mysqli->query("SELECT MAX(VERSION) FROM TBL_APK");
            $row = $result->fetch_row();
            $count = $row[0];

            if($count > $apkversion){
                //Newer APK is avaiable
                echo "1";
            }else{
                //There is no never APK avaiable
                echo "2";
            }

    }else{
        //Error by GETTING apkversion from Android …
Run Code Online (Sandbox Code Playgroud)

php mysql stringbuilder android httpurlconnection

7
推荐指数
1
解决办法
333
查看次数