Замена не буквенно-цифровых символов в powershell [duplicate]

Позорное java.sql.SQLException: не найдено подходящего драйвера

blockquote>

Это исключение может иметь в основном две причины:

1. Драйвер JDBC не загружен

Вам необходимо убедиться, что драйвер JDBC помещен в собственную папку /lib сервера.

[/g15]

Или, если на самом деле вы не используете источник данных пула соединений, управляемый сервером, а вручную запускаете DriverManager#getConnection() в WAR , тогда вам нужно поместить драйвер JDBC в WAR /WEB-INF/lib и выполнить ..

Class.forName("com.example.jdbc.Driver");

.. в вашем коде перед первый DriverManager#getConnection() вызов, посредством которого вы делаете убедитесь, что вы не проглатываете / игнорируете любые ClassNotFoundException, которые могут быть выброшены им, и продолжайте поток кода, как будто ничего исключительного не произошло. См. Также Где я должен разместить драйвер JDBC для пула соединений Tomcat?

2. Или URL-адрес JDBC находится в неправильном синтаксисе

Вам нужно убедиться, что URL JDBC соответствует документации драйвера JDBC и помните, что он обычно чувствителен к регистру. Когда URL-адрес JDBC не возвращает true для Driver#acceptsURL() для любого из загруженных драйверов, тогда вы также получите именно это исключение.

В случае PostgreSQL это документально здесь .

С JDBC база данных представлена ​​URL-адресом (Uniform Resource Locator). С PostgreSQL ™ это принимает одну из следующих форм:

  • jdbc:postgresql:database
  • jdbc:postgresql://host/database
  • jdbc:postgresql://host:port/database
blockquote>

В случае с MySQL это здесь .

Общий формат URL-адреса JDBC для подключения к серверу MySQL следующим образом: элементы в квадратных скобках ([ ]) являются необязательными:

jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]

blockquote>

В случае Oracle это документировано здесь .

Существует 2 синтаксиса URL, старый синтаксис, который будет работать только с SID и новый с именем службы Oracle.

Старый синтаксис jdbc:oracle:thin:@[HOST][:PORT]:SID

Новый синтаксис jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

blockquote>

См. также:

7
задан Antonio Laguna 20 October 2011 в 14:30
поделиться

7 ответов

Ну, я могу помочь вам с некоторыми из кода .....

Я использовал это недавно в проекте ac # для удаления с адресов электронной почты:

    static string RemoveDiacritics(string stIn)
    {
        string stFormD = (stIn ?? string.Empty).Normalize(NormalizationForm.FormD);
        StringBuilder sb = new StringBuilder();

        for (int ich = 0; ich < stFormD.Length; ich++)
        {
            UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]);
            if (uc != UnicodeCategory.NonSpacingMark)
            {
                sb.Append(stFormD[ich]);
            }
        }

        return (sb.ToString().Normalize(NormalizationForm.FormC));
    }

I думаю, теперь я могу сказать, что «расширение в сценарий PowerShell / форма оставлена ​​читателю» .... надеюсь, что это поможет ....

6
ответ дан penderi 18 August 2018 в 19:20
поделиться
  • 1
    +1 Smart snippet, я преобразовал его в PowerShell, он работает, как ожидалось, спасибо. – JPBlanc 20 October 2011 в 15:17
  • 2
    Он отлично работает в PowerShell. На самом деле спасибо за обмен: D – Antonio Laguna 30 November 2011 в 11:37

Другое решение ... быстро «повторно использовать» ваш C # в PowerShell (коды кода на C # теряются где-то в сети).

Add-Type -TypeDefinition @"
    using System.Text;
    using System.Globalization;

    public class Utils
    {
        public static string RemoveDiacritics(string stIn)
        {
            string stFormD = stIn.Normalize(NormalizationForm.FormD);
            StringBuilder sb = new StringBuilder();

            for (int ich = 0; ich < stFormD.Length; ich++)
            {
                UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(stFormD[ich]);
                if (uc != UnicodeCategory.NonSpacingMark)
                {
                    sb.Append(stFormD[ich]);
                }
            }
            return (sb.ToString().Normalize(NormalizationForm.FormC));
        }
    }
"@ | Out-Null

[Utils]::RemoveDiacritics("ABC-abc-ČŠŽ-čšž")
2
ответ дан blank3 18 August 2018 в 19:20
поделиться
PS> [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding(1251).GetBytes("Ramón"))
Ramon
PS>
3
ответ дан Damian Powell 18 August 2018 в 19:20
поделиться

С помощью приведенных выше примеров я использую этот «однострочный:» в трубе (проверен только в Win10):

"öüóőúéáűí".Normalize("FormD") -replace '\p{M}', ''

Результат:

ouooueeui
0
ответ дан it_specialist 18 August 2018 в 19:20
поделиться

Другой перевод PowerShell для @ip для не C # кодеров; o)

function Remove-Diacritics 
{
  param ([String]$sToModify = [String]::Empty)

  foreach ($s in $sToModify) # Param may be a string or a list of strings
  {
    if ($sToModify -eq $null) {return [string]::Empty}

    $sNormalized = $sToModify.Normalize("FormD")

    foreach ($c in [Char[]]$sNormalized)
    {
      $uCategory = [System.Globalization.CharUnicodeInfo]::GetUnicodeCategory($c)
      if ($uCategory -ne "NonSpacingMark") {$res += $c}
    }

    return $res
  }
}

Clear-Host
$name = "Un été de Raphaël"
Write-Host (Remove-Diacritics $name )
$test = ("äâûê", "éèà", "ùçä")
$test | % {Remove-Diacritics $_}
Remove-Diacritics $test
6
ответ дан JPBlanc 18 August 2018 в 19:20
поделиться

Вместо создания строковых построек и циклических символов вы можете просто использовать -replace в строке NFD для удаления комбинированных меток:

function Remove-Diacritics {
param ([String]$src = [String]::Empty)
  $normalized = $src.Normalize( [Text.NormalizationForm]::FormD )
  ($normalized -replace '\p{M}', '')
}
0
ответ дан Peter 18 August 2018 в 19:20
поделиться

В соответствии с ответом ip. вот версия Powershell.

function Remove-Diacritics {
param ([String]$src = [String]::Empty)
  $normalized = $src.Normalize( [Text.NormalizationForm]::FormD )
  $sb = new-object Text.StringBuilder
  $normalized.ToCharArray() | % { 
    if( [Globalization.CharUnicodeInfo]::GetUnicodeCategory($_) -ne [Globalization.UnicodeCategory]::NonSpacingMark) {
      [void]$sb.Append($_)
    }
  }
  $sb.ToString()
}

# Test data
@("Rhône", "Basíl", "Åbo", "", "Gräsäntörmä") | % { Remove-Diacritics $_ }

Выход:

Rhone
Basil
Abo

Grasantorma
18
ответ дан vonPryz 18 August 2018 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: